- 选择排序
在剩余的数组中选择最小的插入到相应位置
时间复杂度:O(N^2)
public static void sort(int[] a,int low,int high){
for(int i = 0;i<=high;i++){
int minIndex = i;
for(int j = i+1;j<=high;j++){
if(a[j]<a[minIndex])
minIndex = j;
}
swap(a,i,minIndex);
}
}
2.插入排序
类似与整理纸牌,将下一个数字与已排序完成的部分作比较,进行插入
时间复杂度:O(N^2)
for(int i = 1;i<=high;i++){
int e = a[i];
int j;
for(j = i;j>0&&a[j-1]>e;j--)
a[j] = a[j-1];
a[j] = e;
}
插入排序比选择排序快,因为插入排序可以提前终止内层循环
在数组本身接近有序时,插入排序的效率很高,甚至高于O(N)的算法。