排序算法

  1. 选择排序

在剩余的数组中选择最小的插入到相应位置
时间复杂度: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)的算法。

点赞