算法(三)插入排序

余生颓废 提交于 2019-11-28 18:18:31

排序原理

所谓的插入排序跟我们打牌在调整我们手里牌的顺序原理是一样的,也就是说将未排序的元素依次插入到前边已经排好序的元素中适当的位置,知道全部插完为止。
在这里插入图片描述

时间复杂度

在这里插入图片描述

排序代码

public class InsertionSort {


    /**
     * 插入排序优化版本
     * 适用场景:数组接近有序的情况下
     */
    public void insertionSortV(int[] arr, int a, int n) {
        for (int i = 1; i < arr.length; i++) {
            //将外层循环的元素复制一份,
            int e = arr[i];
            //记录外层元素应该插入的位置
            int j;
            /**
             * 内层循环,与外层循环复制的那个元素进行比较,如果
             * 小于被比较的元素,将被比较的元素向后移动,然后再用复制的元素
             * 在跟以前的前边的元素比较,以此类推,直到找到比他大的元素终止循环,将给元素放在比他大的后边
             */
            for (j = i; j > 0 && arr[j - 1] > e; j--) {
                arr[j] = arr[j - 1];
            }
            arr[j] = e;
        }
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!