选择排序是一种非常基础的排序算法.其算法思想仍然是将线性表看成有序和无序两个部分.因为其中运用到交换步骤,因此选择排序是一种交换排序.
选择排序
算法思想:
(1)开始时整个线性表为无序表,有序表为空.
(2)将无序表的第一个元素A[0]与其后的每个元素A[i] (i=1,2,3…n)作比较, 若A[0]较大,将A[i]交换.最后得到的第一个元素将是整个线性表中最小的元素.这样有序表元素+1,无序表元素-1;
(3)重复第(2)步,直到无序表长度为0;
示意图
代码演示
/**
* @param array
* 选择排序
*/
public static void SelectionSort(int[] array) {
for (int i=0;i<array.length-1;i++){
for(int j=i+1;j<=array.length-1;j++){
if(array[i]>array[j]){
swap(i, j, array);
}
}
}
}
交换函数
/**
* @param i
* @param j
* @param array
*/
private static void swap(int i, int j,int [] array) {
int temp=array[i];
array[i]=array[j];
array[j]=temp;
}
算法性能分析
最好,最坏,平均情况下算法的时间复杂度均为
O(n2)