

【数据结构与算法】—— 插入排序
source link: http://www.cnblogs.com/sun-iot/p/12176097.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

插入排序(Insertion sort)是一种简单直观且稳定的排序算法。如果有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,再将这个最后元素插入到已排好序的第一部分中。
插入介绍
老规矩,介绍就在上面。
排序思路
- 从有序数列和无序数列{a2,a3,…,an}开始进行排序;
- 处理第i个元素时(i=2,3,…,n),数列{a1,a2,…,ai-1}是已有序的,而数列{ai,ai+1,…,an}是无序的。用ai与ai-1,a i-2,…,a1进行比较,找出合适的位置将ai插入;
- 重复第二步,共进行n-i次插入处理,数列全部有序。
插入排序的基本思想是:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
插入分析
从网上找个图,就不给大家画了。哎,还是简单画一个吧。

代码实现
private static int[] insertSort(int[] arr) { if (arr == null || arr.length < 2) { return arr; } for (int i = 1; i < arr.length; i++) { int temp = arr[i]; int indx = 0; boolean flag = false ; for (int j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { arr[j] = arr[j - 1]; indx = j - 1; }else { break; } arr[indx] = temp; } System.out.println("第" + (i) + "次排序: " + Arrays.toString(arr)); } return arr; }
Recommend
-
186
排序算法(Sort) 引言 我们平时对计算机中存储的数据执行的两种最常见的操作就是排序和查找,对于计算机的排序和查找的研究,自计算机诞生以来就没有停止过。如今又是大数据,云计算的时代,对数据的排序和查找的速度、效率要求更高,因此要对排序和查找的算法进...
-
111
小白学数据结构——四、排序算法Python(桶、计数、基数排序)
-
90
数据结构(十二)——排序算法一、排序简介1、排序的一般定义排序是计算机中经常进行的操作,目的在于将一组无序的数据元素调整为有序的数据元素。序列:1,20,45,5,2,12排序后:1,2,5,12,20,452、排序的数学定义3、排序的稳定性如果序列中的两个元素R[i]、...
-
19
-
16
前言 真的,看到挺多博客的插入排序,思路大多都是对的,但是在代码实现上不严谨,甚至还有的跟冒泡排序搞混了,还是有必要分析波插入排序,希望能帮助到大家。 一.插入排序原理 插入排序原理是: 逐...
-
10
《算法导论》2.1 节《插入排序》:笔记、代码实现与练习解答¶ 笔记
-
10
排序算法——直接插入排序 2019-10-31
-
9
1.源码中的 Sort 排序 在 sky_engine/lib/internal/sort.dart 中有一个 Sort 类,其中 sortRange 方法可以进行排序。可以看出 sortRange 方法是对 List 索引范围区间进行排序。
-
8
插入排序,一般是说直接插入排序,是一种最直观最简单的排序算法。插入排序的原理是依次将未排序的数据元素插入已完成排序的有序数列,如此往复,最终完成所有数据的排序。在插入排序中,往前遍历的时候,遇到等值的元素就直接插入结...
-
3
数据结构-排序(二)插入排序一、 直接插入排序1、算法思想 算法思想: 每次将⼀个待排序的记录按其关键字大小插入到前面已排好序的子序列中,直到全部记录插⼊完成。 排序过程:
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK