思想:
将第一个元素看成一个数组排序,然后将第一个第二个元素看成一个数组排序,再将第一,二,三个元素看成一个数组排序,以此类推插入排序和选择排序的不同在于,插入排序可提前终止排序,时间复杂度为o(n^2)。
public class Charu {
public static void main(String[] args) {
int [] a = new int[]{3,1,10,5,7,2,4,9,6,0};
InsertSort2(a,10);
for (int i : a) {
System.out.println(i);
}
}
//a为数组,n为数组的长度
public static void InsertSort1(int []a ,int n){//可提前终止
for(int i=1;i<n;i++){
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
//交换位置
int temp = a[j];
a[j]=a[j-1];
a[j-1]=temp;
}else{
break;
}
}
}
}
//a为数组,n为数组的长度
public static void InsertSort2(int []a ,int n){//可提前终止
for(int i=1;i<n;i++){
//寻找元素a[i]合适的插入为止
for(int j=i;j>0&&a[j]<a[j-1];j--){
//交换位置
int temp = a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}