注:写此文章的目的,本质上想要自己掌握,因为自己打一遍,收获的效果要比自己看的强的多,如果再能帮助别人,那可真是太好了。
用途:在一个有序数列之中,插入一个数,插入完成以后数列仍是有序的,就是将一个数据插入到有序数列以后仍然有序,从而得到一个新的,个数加一个的有序数列。
算法适合少部分数据,时间复杂度为O(n^2)
最差情况:反序,需要移动n*n(n-1)/2个元素
用途:在一个有序数列之中,插入一个数,插入完成以后数列仍是有序的,就是将一个数据插入到有序数列以后仍然有序,从而得到一个新的,个数加一个的有序数列。
算法适合少部分数据,时间复杂度为O(n^2)
最差情况:反序,需要移动n*n(n-1)/2个元素
最好情况:正序,不需要移动元素
ps:居然发到问题上了,白白扣了我40分,好心痛。
public static void insertSort(int[] arr){
for(int i=1;i<arr.length;i++){
int prove=arr[i];
int position=i;
for(int j=i-1;j>=0;j--){
if(arr[j]>prov){
arr[j+1]=arr[j];
position - =1;
}else{
break;
}
}
arr[position]=prov;
}
}