vlambda博客
学习文章列表

七大排序算法之插入排序

前言

插入排序也是比较常用的

原理

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

时间复杂度

平均情况: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