直接选择排序的排序速度要比冒泡排序快一些,也是常用的排序算法!!!
基本思想
直接选择排序的基本思路:是指将指定排序位置与其他数组元素分别对比,如果满足条件就交换元素值,这样排序好的位置逐渐扩大,最后将整个数组都成为已排序好的格式。
举例:
有一个小学生,从包含数字1-10的乱序的数字堆中选择合适的数字,组成一个1-10的排序,而这个学生首先从数字堆中选出1,放在第一位,然后选择数字2(注意此时数字堆里面已经没有1了),放在第二位,依次类推,直到找到数字9,放在8的后面,最后剩下10,就不用选择了,直接放在最后就好啦。
算法实现
/*
* 直接选择排序算法的实现
*
*/
public class 直接选择排序 {
public static void main(String[] args) {
int[] array = {42,12,56,33,1,3,45};
//创建直接排序类的对象
直接选择排序 sorter = new 直接选择排序();
//调用排序对象的方法将数组排序
sorter.sort(array);
}
/*
* 直接选择排序
* @param array
* 要排序的数组
*/
public void sort(int[] array) {
int index;
for(int i=1;i<array.length;i++) {
index = 0;
for(int j=1;j<=array.length-i;j++) {
if(array[j]>array[index]) {
index = j;
}
}
//交换在位置array.length-i 和index(最大值)上的两个数
int temp =array[array.length-i];//把第一个元素值保存到临时变量中
array[array.length-i]=array[index];//把第二个元素保存到第一个元素单元中
array[index] = temp;//把临时变量也就是第一个元素原值保存到第二个元素中
}
showArray(array);
}
/*
* 显示数组中低端所有元素
* @param array
* 要显示的数组
*/
public void showArray(int[] array) {
for(int i:array) {
System.out.print(">"+i);
}
System.out.print(" ");
}
}