对于插入排序,我们可以将其与选择排序进行比,这两种排序我们都可以将其分为两部分,已经排好的(左边),没有排好的(右边)。选择排序是从从未排好的数组中选择最小的,而插入排序是按次序拿出元素,然后在已经排好序的数组中进行移动,就像咱们移动扑克牌一样:
插入排序常规代码实现:
public void sort(Comparable[] arr){
for(int i=1;i<arr.length;i++){
for(int j=i;j>0;j--){
if(arr[j].compareTo(arr[j-1])<0){
Comparable temp = arr[j-1];
arr[j-1]=arr[j];
arr[j]=temp;
}
else{
break;
}
}
}
}
2.插入排序优化后实现
public void sort2(Comparable[] arr){
for(int i=1;i<arr.length;i++){
Comparable e=arr[i];
int j;
for(j=i;j>0;j--) {
if(arr[j-1].compareTo(e)>0){
arr[j]=arr[j-1];
}else{
arr[j]=e;
break;
}
}
}
}
常规插入排序的可视化: