插入排序
今天复习了插入排序。插入排序的主要思想类似于玩扑克牌的洗牌,假设之前的元素都是有序的,将取出的元素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)。