Java八大排序——插入排序

1.什么是插入排序

        插入排序是一种简单而高效的排序算法,其基本思想是将一个待排序的数组分为已排序和未排序两部分,每次从未排序部分中取出一个元素,插入到已排序部分的合适位置,直到所有元素都被插入到已排序部分为止。插入排序的时间复杂度为O(n^2),但是在实际应用中,插入排序的效率比冒泡排序和选择排序要高,尤其是对于部分有序的数组,插入排序的效率更是非常高。

2.插入排序的步骤

        第一步:认为数组当中的第一个数值是已经排序好的数值

        第二步:定义一个游标i,从第二个数值开始,不断的向后进行遍历

        第三步:游标指向的数据插入已经排序好的数组当中

  如何实现插入?

        定义j游标,j指向i的前一个数据,j+1指向i,j和j+1进行比较,arr[j]大,数据交换,j--

图文解释 

        第一步:

        第二步:

        第三步: 

3.代码实现 

public static void main(String[] args) {
        int[] arr={5,7,4,2,0,3,1,6};
        sort(arr);
        System.out.println(Arrays.toString(arr));
    }
    //插入排序
    public static void sort(int[] arr) {
      for (int i=1;i<arr.length;i++){
          for (int j=i-1;j>=0;j--){
              if (arr[j]>arr[j+1]){
                  int a=arr[j];
                  arr[j]=arr[j+1];
                  arr[j+1]=a;
              }
          }
      }
    }

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值