4 Java 选择排序
1 基本思想
在未排序序列中找到最小元素,存放到未排序序列的起始位置。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种算法,需要对比len-n-1次,但是只交换1次或者0次。
2 算法描述
①. 从待排序列中,找到最小的元素;
②. 如果最小元素不是待排序列的第一个,将其和第一个元素互换;
③. 从余下的 N – 1 个元素中,找出最小的元素,重复①、②步,直到排序结束。
3、代码实现:
public class ChoiceSort {
public static void main(String[] args) {
int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
choiceSort(array);
}
/**
* 实例:
* 10, 1, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 10, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 2, 9, 10, 8, 3, 7, 4, 6, 5
* 1, 2, 3, 10, 8, 9, 7, 4, 6, 5
* @param array
*/
public static void choiceSort(int[] array) {
int len = array.length;
for (int i=0; i<len-1; i++) {
int minIndex = i;
for (int j=i; j<len-1; j++) {
// 将最小元素下标赋给minIndex
if (array[minIndex] > array[j+1]) {
minIndex = j+1;
}
}
// 最小值不是未排序序列的第一个元素,则与其交换
if (minIndex != i) {
SortUtil.swap(array, minIndex, i);
}
System.out.println(Arrays.toString(array));
}
}
}
4 Java 选择排序的更多相关文章
- java选择排序
/** * 选择排序 * @param a * @date 2016-10-8 * @author shaobn */ public static void selectSort(int[] a){ ...
- java 选择排序法
public class Test3 { /**@author shaobn * @param 选择排序:将a.length - i个元素分别和第i个元素相比较,小的话就将值调换.依次递减进行排列 * ...
- java选择排序详解
排序算法--选择排序 public class Selector implements ISortAble{ @Override public void sort(int[] a) { int n=a ...
- Java选择排序,插入排序,快速排序
public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; 选择排序(a); ...
- java 选择排序、冒泡排序、折半查找
public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...
- Java选择排序算法
package com.jckb; /**选择排序 * * @author gx *算法原理: *第一个数和后面每个数进行比较,如果大于后面的数就进行位置交换, *第一次比较结束后得到了最小值 */ ...
- java 选择排序与冒泡排序
选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...
- java 选择排序
import java.util.Scanner; public class SelectionSort { public static void sort(int[] a, int n){ if(n ...
- 算法:排序----Java选择排序
public static void selectionSort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) ...
随机推荐
- 12 Mysql之工作中常用操作
Mysql 专题讲解 一.用户创建与权限管理 a) 创建和删除用户 创建用户: CREATE USER jack@localhost; UPDATE USER SET password=passwo ...
- pyquery 库的使用
from pyquery import PyQuery as pq # 文件勿命名为 pyquery.py,会发生冲突 # 字符串初始化 html = ''' <div id="pag ...
- JS遍历对象和数组总结
在日常工作过程中,我们对于javaScript遍历对象.数组的操作是十分的频繁的,今天把经常用到的方法总结一下! 一.遍历对象 1.使用Object.keys()遍历 返回一个数组,包括对象自身的(不 ...
- vue下载后台传过来的乱码流的解决办法
后台返回的乱码流 解决办法: 请求方式用的是axios,主要加关键的 {responseType: 'blob'} axios封装 export function postDownload(url, ...
- 分布式消息中间件之kafka设计思想及基本介绍(一)
Kafka初探 场景->需求->解决方案->应用->原理 我该如何去设计消息中间件--借鉴/完善 场景 跨进程通信(进程间生产消费模型) 需求 基本需求 实现消息的发送和接收. ...
- shell常用分隔符及管道的用法
1.命令1;命令2;命令3;.... 代码顺序执行 2.&&连接两条命令:命令1&&命令2&&命令3... 短路执行 3.||连接两条命令:命令1||命 ...
- 基础数据类型(int,str,bool)
一 python 中的基础数据类型 1.int 数字类型(整数类型) 主要用来数学计算 2.str 字符串 可以保存少量数据进行操作 3.bool 布尔值 判断真假 True Fa ...
- QTP(2)
注意: 在使用QTP录制代码时,能使用鼠标点击的就不要使用键盘操作,能单击的操作就不要使用双击 一.QTP的工作流程 1.录制测试脚本前的准备: a.分析被测系统是否可以实现自动化测试 b.分析被测系 ...
- 内嵌tomcat快速入门
1.依赖 <!--Java语言操作tomcat --> <dependency> <groupId>org.apache.tomcat.embed</grou ...
- java8学习之Lambda表达式深入与流初步
Lambda表达式深入: 在上一次[http://www.cnblogs.com/webor2006/p/8135873.html]中介绍Lambda表达式的作用时,其中说到这点: 如标红处所说,既然 ...