八大排序 -- 插入排序 之 【直接插入排序】

插入排序策略:

将无序子序列中的一个或几个记录“插入”到有序序列中,从而增加记录的有序序列的长度。

直接插入排序的策略是:

  • 一共要进行n-1趟排序;
  • 在第p趟,我们将位置p上的元素向左移动,直到它在前p+1个元素中的正确位置被找到的地方。

时间复杂度: O(n*n)

最好的情况是:已经排序好时时间复杂度为 O(n)

直接放代码:

package ch02;

import util.ArrayUtil;

public class InsertSort {
    //时间复杂度 O(n*n)
    public static void doInsertSort(int[] array){
        for(int i=1;i<array.length;i++){
            int tmp = array[i];
            int j;
            for(j=i;j>0&&tmp<array[j-1];j--){
                array[j]=array[j-1];
            }
            array[j]=tmp;
        }
    }
    public static void main(String[] args) {
        int[] array = new int[]{58,46,72,95,84,25,37,58,63,12};
//      int[] array = new int[]{2,8,6,4,3,9,1};
        ArrayUtil.display(array);
        //数组的某个值a[i]是值传递;整个数组是引用传递
        doInsertSort(array);
        ArrayUtil.display(array);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值