算法与数据结构_02_选择排序
选择排序
-
什么是选择排序?
-
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
-
再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
-
重复第二步,直到所有元素均排序完毕。
-
-
代码:
public class SelectionSort { /** * 测试方法 * @param args */ public static void main(String[] args) { Integer[] array={4,6,8,7,9,2,10,1}; sort(array); for (Integer i:array) { System.out.println(i); } } /** * - 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。 * * - 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 * * - 重复第二步,直到所有元素均排序完毕。 * * @param array */ public static void sort(Comparable[] array){ for (int i=0;i<array.length-1;i++){ //定义一个变量记录最小元素所在处的索引,默认为参与选择排序的第一个元素 int minIndex=i; for(int j=i+1;j<array.length;j++){ //比较最小索引处的值和j索引处的值 if(gerater(array[minIndex],array[j])){ minIndex=j; } } // 一次内循环过后,就得到了当前最小的minIndex,那么就将最小索引处的值,和第一个元素的值进行交换, swap(array,i,minIndex); } } //判断v是否大于w public static boolean gerater(Comparable v,Comparable w){ return v.compareTo(w)>0; } //交换数组中索引i和索引处的值 public static void swap(Comparable[] array,int i,int j){ Comparable temp=0; temp=array[i]; array[i]=array[j]; array[j]=temp; } }