美文网首页
数据结构与算法:直接插入排序

数据结构与算法:直接插入排序

作者: 我爱铲屎 | 来源:发表于2019-07-16 22:38 被阅读0次

直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。算法适用于少量数据的排序,时间复杂度O(n^2)。是稳定的排序方法。

直接插入排序的过程

默认为0位置开始是排好序的,接着0-1位置的数排序,只需判断1位置的数比0位置的数大,0-2位置数排序,需要2位置的数依次与1位置数和0位置数比较,若大于1位置的数,则0~2是排好序的,否则,2位置和1位置数交换,再和0位置数比较,在判断是否需要交换。0 - 2位置数据有序后再处理0 - 3的数据方法和前面的一样……直到整个数组有序。如果一个数组有n个元素,则需要进行n-1次的排序过程。

例如,已知待排序的一组记录是:60,71,49,11,24,3,66。7个元素需要进行6次排序。排序过程如下图示:

微信图片_20190715221452.png
微信图片_20190715221458.png
算法实现
/*
 * 默认为0位置开始是排好序的,接着0-1位置的数排序,只需判断1位置的数比0位置的数大,
 * 0-2位置数排序,需要2位置的数依次与1位置数和0位置数比较,若大于1位置的数,则0~2是排好序的,
 * 否则,2位置和1位置数交换,再和0位置数比较,在判断是否需要交换。
 * 0 - 2位置数据有序后再处理0 - 3的数据方法和前面的一样……直到整个数组有序。
 * 如果一个数组有n个元素,则需要进行n-1次的排序过程。
 * */
public static void insertSort(int[] arr) {
        if(arr == null || arr.length < 2)return;
        //需要进行n-1次的排序过程。
        for(int i = 1; i < arr.length; i++) {
            /*
             * 当前元素下标大于等于0且比其前面的元素小
             * 就交换,否则直接退出这次排序过程
             * */
            for(int j = i-1; j >=0 && arr[j+1] < arr[j]; j--) {
                int temp = arr[j+1];
                arr[j+1] = arr[j];
                arr[j] = temp;
            }
        }
        
}

相关文章

  • 技术图文:如何利用C# 实现 Kruskal 最小生成树算法?

    背景 以前我写过一些图文来介绍有关数据结构与算法的知识: 8大排序算法之:直接插入排序(Straight Inse...

  • 排序算法4:二分插入排序

    数据结构与算法 1 基本思路 二分插入排序,改进插入直接插入排序 在新元素插入到已序数组时,用二分法查找插入的位置...

  • 排序算法(一)直接插入排序算法

    排序算法(一)直接插入排序算法 1.基本概念  直接插入排序(Straight-Insertion-Sort)是一...

  • 排序算法原理与代码实现

    1、直接插入排序与希尔排序 直接插入排序 直接插入排序算法步骤分为两步:首先,将第一个元素当成一个有序的序列,然后...

  • 算法面经--直接插入排序

    直接插入排序 一、算法思路与介绍 插入排序(Insertion Sorting)的基本思想是:把 n 个待排序的元...

  • 数据结构与算法-直接插入排序

    扑克牌是我们几乎每个人都可能玩过的游戏。最基本的扑克玩法都是一边摸牌,一边理牌。假如我们拿到了这样一手牌,如图9-...

  • 数据结构与算法:直接插入排序

    直接插入排序是一种简单的插入排序法,其基本思想是:把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序...

  • 技术类面试要点梳理

    未完待续== 一、数据结构与算法 1. 排序 插入排序N-1趟排序组成。从P=1到P=N-1趟,插入排序保证从位置...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • 插入排序算法实现

    排序算法是最常见,最基础的算法,作者文集中记录了两种排序算法(插入排序,归并排序) 插入排序算法实现很简单直接,附...

网友评论

      本文标题:数据结构与算法:直接插入排序

      本文链接:https://www.haomeiwen.com/subject/gyiokctx.html