直接插入排序

//这是我自己写的直接插入排序,直接插入排序的思想就是  以第一个数为基准,把后边的数,插入到前边已经排好序的适当位置上,直到整个有序,稳定排序,时间复杂度为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=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 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){ //从第二个元素开始,进行插入
            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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值