插入排序: 循环不变式:每次循环从数组A中取出第j个元素插入有序区A[1 .. j-1],然后递增j。这样A[1 .. j-1]的有序性始终得到保持,这就是所谓的“循环不变 (loop invariant)”。 循环不变式在理论上保证插入排序算法的正确性。 插入排序的时间复杂度是 O(n2) 归并排 ...
分类:
编程语言 时间:
2018-07-27 13:11:44
阅读次数:
175
算法原理:在数组的的有序区中找到待排序的元素要插入的位置,将该位置后面的元素整体后移,将待排序的元素插入该位置,重复以上步骤,直到倒排序的元素全部插入完成为止。 图示: 代码: ...
分类:
编程语言 时间:
2018-07-25 20:45:41
阅读次数:
139
/*Code function : 插入排序算法 时间复杂度:O(n*n)空间复杂度:1*/List<Integer> arrayList = new List<Integer>{3,5,4,2,6};for(Integer i = 1; i< arrayList.size(); i++) {Int ...
分类:
编程语言 时间:
2018-07-25 16:12:24
阅读次数:
126
文字描述 和直接插入排序比较,只是把“查找”操作利用“折半查找”来实现,由此进行的插入排序叫做折半插入排序。 示意图 略 算法分析 和直接插入排序比,减少了比较次数,但是移动次数没有变,所以折半插入排序算法的时间复杂度仍然是n*n, 辅助空间为1,是稳定的排序方法。 代码实现 1 #include ...
分类:
编程语言 时间:
2018-07-21 17:04:24
阅读次数:
138
常见的几种排序算法复杂度如下: 方式: 平均 最坏 最好 插入 n^2 n^2 n 希尔 n^1.3 / / 冒泡 n^2 n^2 n 快速 nlogn n^2 nlogn 选择 n^2 n^2 n^2 堆排 nlogn nlogn nlogn 归并 nlogn nlogn nlogn 基数 d(n ...
分类:
编程语言 时间:
2018-07-17 16:42:48
阅读次数:
142
/* 算法描述 1.第一个数a[0]与第二个数a[1]比较,若a[0] > a[1],则 a[1] = a[0] 2.关键是第三个数a[2],a[2]先与a[1],若a[2] = 0;j--) { //j--:若a[2] arr[j + 1]) { //比较相邻两数大小 let temp = arr... ...
分类:
编程语言 时间:
2018-07-11 10:44:31
阅读次数:
178
算法题 14 LeetCode 147 链表的插入排序: 解题代码: ...
分类:
编程语言 时间:
2018-07-10 11:15:56
阅读次数:
155
1、算法思路 插入排序就像是整理扑克牌一样。试想你左手拿了几张排好序的扑克牌,右手有几张未排序的排。现在右手从左到右起的第一张牌是7,你该怎样放去左手排好序的牌中?先把7拿出来,然后跟右手的牌从右往左一一比较,最后把7插在比7小与比7大的牌中间。这个就是插入排序的原理,一开始把数组中第一个数当成已排 ...
分类:
编程语言 时间:
2018-07-06 17:54:42
阅读次数:
153
(1)希尔排序: 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因DL.Shell于1959年提出而得名。 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含 ...
分类:
编程语言 时间:
2018-07-04 22:55:55
阅读次数:
187
前言 想象一种现实场景,几个人打扑克牌,在接牌过程中,假设按照扑克牌上的数字大小进行摆牌,假设手中已经有若干张扑克牌(按照牌面大小排好次序),那么下次接到牌之后,我们会把刚接到的牌插入到手中已有的牌序列中的"合适"位置,现实中的这种"接牌"思路,就是我们今天要说的"插入思想" 直接插入排序算法 给定 ...
分类:
编程语言 时间:
2018-07-03 11:58:26
阅读次数:
162