选择排序
1. 基本思想:
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
2. 排序过程:
【示例】:
初始关键字[49 38 65 97 76 13 27 49]
第一趟排序后13 [38 65 97 76 49 27 49]
第二趟排序后13 27 [65 97 76 49 38 49]
第三趟排序后13 27 38 [97 76 49 65 49]
第四趟排序后13 27 38 49 [49 97 65 76]
第五趟排序后13 27 38 49 49 [97 97 76]
第六趟排序后13 27 38 49 49 76 [76 97]
第七趟排序后13 27 38 49 49 76 76 [ 97]
最后排序结果13 27 38 49 49 76 76 97
java代码实现:
package test.suanfa;
public class SelectSort {
public static void main(String[] args) {
Integer[] intgArr = { 5, 9, 1, 4, 2, 6, 3, 8, 0, 7 };
SelectSort insertSort = new SelectSort();
insertSort.select(intgArr);
for (Integer intObj : intgArr) {
System.out.print(intObj + " ");
}
}
public void select(Integer[] array) {
int minIndex;// 最小索引
/*
*
* 循环整个数组(其实这里的上界为array.length - 1 即可,因为当i= array.length-1
*
* 时,最后一个元素就已是最大的了,如果为array.length时,内层循环将不再循环),每轮假设
*
* 第一个元素为最小元素,如果从第一元素后能选出比第一个元素更小元素,则让让最小元素与第一
*
* 个元素交换
*/
for (int i = 0; i < array.length; i++) {
minIndex = i;// 假设每轮第一个元素为最小元素
// 从假设的最小元素的下一元素开始循环
for (int j = i + 1; j < array.length; j++) {
// 如果发现有比当前array[smallIndex]更小元素,则记下该元素的索引于smallIndex中
if ((array[j].compareTo(array[minIndex])) < 0) {
minIndex = j;
}
}
// 先前只是记录最小元素索引,当最小元素索引确定后,再与每轮的第一个元素交换
swap(array, i, minIndex);
}
}
public static void swap(Integer[] intgArr, int x, int y) {
// Integer temp; //这个也行
int temp;
temp = intgArr[x];
intgArr[x] = intgArr[y];
intgArr[y] = temp;
}
}
分享到:
相关推荐
最快的排序算法 javahash实现-Java-哈希算法-最快的实现,排序算法数据结构
实现合并排序,插入排序,希尔排序,快速排序,冒泡排序,桶排序算法的java实现。
lz4压缩算法java实现-LZ4-极快的压缩算法,排序算法数据结构 最快的排序算法
最快的排序算法 java实现哈希算法-Java–哈希算法–最快的实现,排序算法数据结构
最快的排序算法 java最快的排序-在Java中对列表进行排序的最快方法,排序算法数据结构
各种排序算法 JAVA代码实现 所有排序算法 JAVA代码实现
各种排序算法java实现各种排序算法java实现各种排序算法java实现各种排序算法java实现各种排序算法java实现
Java排序算法实现 Java排序算法实现 Java排序算法实现
IT常见的面试题目,各种排序算法的Java代码实现,内部有代码和详细的注释信息。
java实现的常用的几种基本排序算法,插入、交换、选择、归并
详细解释了快速排序的java实现.里面有代码,还有注释说明
详解Java常用排序算法-选择排序
各种排序算法,包括冒泡法,选择法,插入法,快速排序
此为一个利用Java语言编写的排序分析程序,程序中统计了各种排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、归并排序、基数排序)的分析,ppt中包含各种排序算法的分析,附上动画演示(来自...
十大常用排序算法(java实现),冒泡排序,简单选择排序等
常用各种排序算法Java的实现_差不多了__.rar常用各种排序算法Java的实现_差不多了__.rar
用蛮力法实现选择排序,冒泡排序程序;用减治法实现插入排序;分治法应用-快排,合并排序,0-1背包问题;Prim算法求最小生成树。伪代码以及java代码实现
基数排序算法 java实现 还有基数排序的原理文档
用java实现了以下算法: 1、冒泡排序、冒泡排序的两种改进。 2、插入排序。 3、选择排序。 4、希尔排序。 5、归并排序。 6、快速排序。