public class insertsort {
public static void main(String args[]){
int[] array={34,3,53,2,23,7,14,10};
insertsort(array);
for(int a:array)
System.out.print(a+" ");
}
private static void insertsort(int[] nums){
int len=nums.length;
if(len<2) return;
for(int i=1;i<len;++i){ //从第二个元素开始,进行插入
for(int j=0;j<i;++j){ //插入的元素要和它前边已经排好序的进行比较
if(nums[i]<nums[j]){ //如果小于,则进行插入
int temp=nums[i]; //保存待插入的元素
for(int k=i;k>j;--k) //顺序把要插入位置后边的元素往后移动一位
nums[k]=nums[k-1];
nums[j]=temp;
}
}
}
}
}
//直接插入排序,直接插入排序的思想就是,以第一个数为基准,把后边的数, 插入到前边已经排好序的适当位置上,直到整个有序,稳定排序,时间复 杂度为O(n^2)
public static void main(String args[]){
int[] array={34,3,53,2,23,7,14,10};
insertsort(array);
for(int a:array)
System.out.print(a+" ");
}
private static void insertsort(int[] nums){
int len=nums.length;
if(len<2) return;
for(int i=1;i<len;++i){ //从第二个元素开始,进行插入
if(nums[i]<nums[i-1]){ //倒着进行比较,如果大于最后一个,则不做变动
int temp=nums[i],j;//如果小于最后一个,则从后往前进行比较
for (j = i - 1; j >= 0 && nums[j] > temp; j--)
nums[j+1]=nums[j];//这个for语句实现了元素的后移
nums[j+1]=temp;//插入元素
}
}
}
}
//直接插入排序,直接插入排序的思想就是 以第一个数为基准,把后边的数,插入到前边已经排好序 的适当位置上,直到整个有序,稳定排序,时间复杂度为O(n^2)
public class insertsort {
public static void main(String args[]){
int[] array={34,3,53,2,23,7,14,10};
insertsort(array);
for(int a:array)
System.out.print(a+" ");
}
private static void insertsort(int[] nums){
int len=nums.length;
if(len<2) return;
for(int i=1;i<len;++i){ //从第二个元素开始,进行插入
for(int j=i-1;j>=0 && nums[j]>nums[j+1];--j){ //插入的元素要和它前边已经排好序的进行比较
int temp=nums[j+1]; //用数据交换代替数据后移
nums[j+1]=nums[j];
nums[j]=temp;
}
}
}
}
如果在插入的元素的时候,对于比较的操作,进行类似二分查找的思想应用的话,就叫做折半插入排序算法,在最坏情况下好于直接插入,在最好情况下坏与直接插入,平均时间复杂度为O(n^2)