七大排序算法之插入排序

Posted 黄庆庆的世界

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了七大排序算法之插入排序相关的知识,希望对你有一定的参考价值。

前言

插入排序也是比较常用的

原理

对于给定的一个数组,初始时,假设第一个元素自成一个有序序列,其余元素为无序序列,接着从第二个元素开始,按照元素的大小,依次将当前处理的元素插入到之前的有序序列中,直到最后一个元素插入到有序序列中为止。

时间复杂度

平均情况:n*n

最坏情况:n*n

最好情况:n

代码

public class InsertSort {

    //插入排序
    //对于给定的一个数组,初始时假设第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,
    //按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直至最后一个记录插入到有序序列中为止。

    //时间复杂度 n*n  最好情况 n  平均情况n*n
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int[] arr={6,3,8,2,9,1};
        System.out.println("排序前数组为:");
        for(int num:arr){
            System.out.print(num+" ");
        }
        System.out.println();
        int tmp;
        for (int i = 1; i < arr.length; i++) {
            // 待插入数据
            tmp = arr[i];
            int j;
            for (j = i - 1; j >= 0; j--) {
                // 判断是否大于tmp,大于则后移一位
                if (arr[j] > tmp) {
                    arr[j + 1] = arr[j];
                } else {
                    break;
                }
            }
            arr[j + 1] = tmp;
            //System.out.println(i + ":" + Arrays.toString(arr));
            System.out.println("第"+i+"趟排序后");
            for(int num:arr){
                System.out.print(num+" ");
            }
            System.out.println();
        }
        System.out.println();
        System.out.println("排序后的数组为:");
        for(int num:arr){
            System.out.print(num+" ");
        }
    }
}

下一篇:快速排序

入口在此:

快速排序

https://blog.csdn.net/hq942845204/article/details/80156943



以上是关于七大排序算法之插入排序的主要内容,如果未能解决你的问题,请参考以下文章

数据结构之七大排序算法

算法3 七大排序之:直接插入排序和希尔排序

七大排序算法

Java实现七大排序算法

万字手撕七大排序(代码+动图演示)

剑指Offer七大排序算法——插入排序