JAVA-选择排序
Posted yjl_2130
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA-选择排序相关的知识,希望对你有一定的参考价值。
选择排序:
选择排序是每一次从待排序的数据元素中选出最小的一个元素,存放在序列的起始位置,直到全部待排序的数据元
素排完。
步骤如下:
-
从待排序序列中,找到关键字最小的元素
-
如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换
-
从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束
-
持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较
代码
public static void main(String[] args) {
int[] array= {4,2,8,9,5,7,6,1,3};
System.out.println("未排序数组排列:");
display(array);
System.out.println("------------------------------");
sort(array);
System.out.println("------------------------------");
System.out.println("排序后数组排列:");
display(array);
}
public static int[] sort(int[] array){
//总共要经过N‐1轮比较
for (int i = 0; i < array.length - 1; i++) {
int min = i;
//每轮需要比较的次数
for (int j = i+1; j < array.length; j++) {
if (array[j] < array[min]){
//记录目前能找到的最小值元素的下标
min = j;
}
}
if ( i != min){
int temp = array[i];
array[i] = array[min];
array[min] = temp;
}
System.out.print("第"+(i+1)+"轮排序后的结果为:");
display(array);
}
return array;
}
//遍历显示数组
public static void display(int[] array){
for (int i = 0; i <array.length ; i++) {
System.out.print(array[i]+"");
}
System.out.println();
}
输出结果:
选择排序性能分析:
选择排序和冒泡排序执行了相同次数的比较:N*(N-1)/2,但是至多只进行了N次交换。
当 N 值很大时,比较次数是主要的,所以和冒泡排序一样,用大O表示是O(N2) 时间级别。但是由于选择排序
交换的次数少,所以选择排序无疑是比冒泡排序快的。当 N 值较小时,如果交换时间比选择时间大的多,那么选
择排序是相当快的。
以上是关于JAVA-选择排序的主要内容,如果未能解决你的问题,请参考以下文章