插入排序

今天复习了插入排序。插入排序的主要思想类似于玩扑克牌的洗牌,假设之前的元素都是有序的,将取出的元素key和之前有序的元素进行比较,如果之前元素比key大,就向后挪一个位子,否则就不用挪动。找到最后一个比key大的元素并且将它向后挪了一个位子之后,空出来的那个位子就是key的位子了。现在我来写一下插入排序的一种典型实现代码。

public static void insertSearch(int[]arr){

  for(int i=1;i<arr.length;i++){

    int key=arr[i];

    int j=i-1;

    while(j>=0&&arr[j]>key){

      arr[j+1]=arr[j];

      j--;

    }

    arr[j+1]=key;

  }

}

插入排序对于近乎有序的数组,时间复杂度可以达到o(n)。

posted @ 2019-07-19 21:21  xbc121  阅读(107)  评论(0编辑  收藏  举报