基本思想
直接选择排序是选择排序的一种,其排序速度比冒泡排序要快一些,是常用的排序算法之一。
其基本思想是的将指定排序位置与其他数组元素分别比较,如果满足条件就交换元素值。注意,这里与冒泡排序的区别是不是交换相邻元素,而是把满足条件的元素与指定的排序位置交换,这样排序好的位置逐渐扩大,最后整个数组都成为已排序好的数组。
算法示例
每一趟从待排序的数组元素中选出最小的或最大的一个元素,顺序放在已排序好的数列的最后,直到全部待排序的数据元素排完。
如:
初始数组【5,14,9,2,11】
第一趟排序后:【 5 ,11 ,9 ,2 】,14
第二趟排序后:【 5 ,2,9 】,11 ,14
第三趟排序后:【 5 ,2】,9 ,11 ,14
第四趟排序后: 2 ,5,9 ,11 ,14
程序实现
SelectSort.java
public class SelectSort {
public static int[] run(int[] array) {
for (int i = 0; i < array.length-1; i++) {
int index = 0;
for (int j = 0; j < array.length-i; j++) {
if (array[j] > array[index]) {
index = j;
}
}
int temp = array[array.length-1-i];
array[array.length-1-i] = array[index];
array[index] = temp;
}
return array;
}
public static void printInfo(int[] array) {
// TODO Auto-generated method stub
for(int k=0;k<array.length;k++){
System.out.print(" "+array[k]);
}
System.out.print("\n");
}
}
clent.java
public class clent {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] array ={5,14,9,2,11};
System.out.print("排序前的数组为:\n");
SelectSort.printInfo(array);
//直接选择排序
array = SelectSort.run(array);
System.out.print("排序后的数组为:\n");
SelectSort.printInfo(array);
}
}
运行结果:
排序前的数组为:
5 14 9 2 11
排序后的数组为:
2 5 9 11 14