希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。但希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时, 效率高, 即可以达到线性排序的效率 但插入排序一般来说是低效的, 因为插入排序每次只能将数据移动一位 希尔... ...
分类:
编程语言 时间:
2016-08-19 14:41:46
阅读次数:
150
?算法 相邻元素两两比较,前者大于后者,彼此交换 从第一对到最后一对,最大的元素沉降到最后 针对未排序部分,重复以上步骤,沉降次大值 每次扫描越来越少的元素,直至不再发生交换 ?评价 平均时间复杂度:O(N2) 稳定排序 ...
分类:
编程语言 时间:
2016-08-15 01:21:35
阅读次数:
177
希尔排序:可看作直接插入排序的改进版. 基本思想: 将整个待排序序列,按照一定的间距gap分割成若干个子序列.然后再分别进行直接插入排序.最后,对全体元素进行直接插入排序. 时间复杂度: O(n)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:不稳定 ...
分类:
编程语言 时间:
2016-07-15 17:08:40
阅读次数:
117
冒泡排序:对还未排序的序列,自前向后相邻元素依次比较和调整,让大的元素下沉,小的元素上浮. 时间复杂度: O(n)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:稳定 ...
分类:
编程语言 时间:
2016-07-13 19:54:49
阅读次数:
128
直接选择排序: 直接选择排序实质是一种交换排序.每次从待排序序列中选取关键字最小的元素,与当前元素交换,直到全部排序. 时间复杂度: O(n^2)-->O(n^2) 空间复杂度:O(1) 是否稳定排序:不稳定 ...
分类:
编程语言 时间:
2016-07-11 12:18:59
阅读次数:
169
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj,Ai原来在位置前,排序后Ai还是要在Aj位置前。 其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一 ...
分类:
编程语言 时间:
2016-07-06 01:38:24
阅读次数:
173
import java.util.Scanner;/*直接插入排序:依次为每个元素找在以排好序列的位置 *稳定排序(相同元素在排序过程保持之间前后位置不变。) *期望复杂度:O(n2) */public class InsertSort { public static void main(Strin ...
分类:
编程语言 时间:
2016-07-04 20:27:17
阅读次数:
171
请尊重个人劳动成果,转载注明出处,谢谢! http://blog.csdn.net/amazing7/article/details/51603682 ## 一、对比分析图 均按从小到大排列 k代表数值中的”数位”个数 n代表数据规模 m代表数据的最大值减最小值 稳定性:稳定排序算法会让原本有相等键 ...
分类:
编程语言 时间:
2016-06-22 15:27:42
阅读次数:
373
稳定排序和不稳定排序 这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底 ...
分类:
编程语言 时间:
2016-06-08 09:15:47
阅读次数:
155
插入排序分为:直接插入排序,二分插入排序(又称折半插入排序),链表插入排序,希尔排序(又称缩小增量排序)。属于稳定排序的一种(通俗地讲,就是两个相等的数不会交换位置)。在这里我具体讲直接插入排序和希尔排序。直接排序插入直接插入排序是由两层嵌套循环组成的。外..
分类:
编程语言 时间:
2016-05-22 18:40:12
阅读次数:
198