七大排序算法——直接插入排序

        插入排序是java中排序的一种,特点就是效率低,容易实现

一、插入排序原理

        有一组数据,我们可以将这些数据分为有序组和带插入组。每次从待插入组中取出第一个元素,与有序组的元素从 后往前进行比较 并找到合适的位置,将该元素插到有序组当中。直到待插入组元素个数为0。每次插入的元素,都会进行判断找到合 适的位置,其实插入排序就相当于选择排序的一种逆序实现。

二、直接插入排序时间复杂度

        直接插入排序在最好情况下,需要比较n-1次,无需交换元素,时间复杂度为O(n);
        在最坏情况下,时间复杂度为O(n2)。
        但是在数组元素随机排列的情况下,插入排序还是要优于上选择排序和冒泡排序的。

三、插入排序图解

四、步骤实现:

        1、首先比较数组的前两个数据,并排序;
        2、比较第三个元素与前两个排好序的数据,并将第三个元素放入适当的位置;
        3、比较第四个元素与前三个排好序的数据,并将第四个元素放入适当的位置;
        ....
        4、每次排序后,我们都可以确定一个值的位置,直至把最后一个元素放入适当的位置。

五、代码结果及实现

5c9c993bd941ca1c4114b9723767acd8761.jpg

 

六、完整代码

package cn.dzp.flyroc.day01;

import java.util.Arrays;

public class InsertSortDemo {

    public static void main(String[] args){

        int[] arr ={8,3,2,5,4,7};
        System.out.println("这是排序前的结果:"+Arrays.toString(arr));
        System.out.println("--------------------------------------------------");
        insertSort(arr);

    }

    //直接插入排序
    public static void insertSort(int[] arr){

        int temp;       //(优化代码,不用每次执行循环的时候,都要给temp分配内存空间)
        for (int i = 1; i < arr.length; i++){       //遍历数组
             temp = arr[i];      //记录待插入的元素

            int j;      //记录待插入元素之前的所有元素
            for (j = i -1; j >= 0; j--){
                if (arr[j] > temp){
                    arr[j+1] = arr[j];
                }else {
                    break;
                }
            }
            arr[j+1] = temp;
            System.out.println("这是第"+i+"次"+"插入排序后的结果:"+ Arrays.toString(arr));
        }
    }
}

 

转载于:https://my.oschina.net/u/4169647/blog/3084379

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值