排序算法
文章平均质量分 65
列出常见的排序算法,并给出示例演示
登天蚂蚁
蜂采百花蜜酿成,为谁辛苦为谁甜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序
排序定义堆排序是利用树的结构特性,构造大顶堆或者小顶堆,通过替换与调整在原有数组上进行排序。实现形式以递增排序为例,将待排序数组构造为大顶堆(不需额外的数据空间,在自身数组上进行操作,原地排序,),所谓大顶堆也就是非叶子节点的节点元素值比它的子节点元素值要大,按此规则构建树结构,则根节点即为最大值。也就是当前数组的第一个元素即为最大值(带有元素跳跃,类似选择排序,都为非稳定排序),将最原创 2016-08-19 13:14:42 · 581 阅读 · 0 评论 -
基数排序
定义与其他常规排序方式不同,基数排序不是根据元素的大小进行调换位置,进而形成有序列表,或者更严格来讲,基数排序不是直接根据元素整体的大小进行元素比较,而是将原始列表元素分成多个部分,对每一部分按一定的规则进行排序,进而形成最终的有序列表。示例:扑克牌排序排序方式:可以先按照牌的种类排序,例如红桃都在梅花前面,如排序规则为:"红桃"以两种颜色进行简单演示由此可得知:基数排原创 2016-08-28 14:05:16 · 700 阅读 · 0 评论 -
冒泡排序
定义冒泡排序作为最常见的排序方式之一,其操作是在相邻的两个元素之间进行比较交换,每一次排序结果都能取出一个最大(最小)值,一个n个元素的待排序列表,最多只需要进行(n-1)次排序即可。示例以整型数组{2,9,11,5,7,20,8}为例:原始列表:2->9->11->5->7->20->81次排序:2->9->5->7->11->8->20 2次排序:2->5->7->原创 2016-10-28 12:15:18 · 425 阅读 · 0 评论 -
选择排序
定义由名称可知,选择排序的操作是通过不断选择待排序列表中的最大(最小)值,由此构成一个有序列表。冒泡排序的每次排序也是选出列表极值,不过其操作是通过不断比较替换相邻元素实现的,选择排序的每次排序是记录列表中的极值下标。由此可知,一个n个元素的列表需要进行(n-1)次选择,才能形成有序列表。示例以整型数组{2,9,11,5,7,20,8}为例:原始列表:2->9->11-原创 2016-10-28 15:17:53 · 424 阅读 · 0 评论 -
快速排序
定义快速排序采用递归的思想,不断将原列表拆分成两个部分,递归进行排序。排序操作为选择一个元素作为“分水岭”,将列表分成所有元素值大于该“分水岭”部分和所有元素值小于该“分水岭”部分。示例以整型数组{2,9,11,5,7,20,8}为例,选择第一个元素作为“分水岭”,以line表示:原始列表:2->9->11->5->7->20->8 line=21次排序:2-原创 2016-10-28 16:13:33 · 398 阅读 · 0 评论 -
插入排序
定义插入排序的原理是将元素不断插入有序的局部列表中,最终形成有序列表。n个元素的待排序列表,需要进行(n-1)排序才能形成有序列表。示例以整型数组{2,9,11,5,7,20,8}为例:原始列表:2->9->11->5->7->20->81次排序:2->9->11->5->7->20->8有序部分:2->92次排序:2->9->11->5->7->2原创 2016-10-28 16:36:36 · 457 阅读 · 0 评论 -
希尔排序
定义希尔排序属于缩小增量排序,原理同插入排序。在以D作为增量的序列中,实现插入排序,形成以D为增量的子序列的有序列表,不断缩小增量执行排序操作,当增量为一时,即为普通的插入排序。示例以整型数组{2,9,11,5,7,20,8}为例:原始列表:2->9->11->5->7->20->8 dis=7/2 存在三个子序列:2、5、8;9、7;11、201次排序原创 2016-10-28 17:12:30 · 468 阅读 · 0 评论 -
归并排序
定义归并排序是将列表细分为子列表,然后将子列表进行有序合并。将列表细分到单个元素,如列表arr,包含两个元素[a,b],将arr细分为两个子列表arr1{a}和arr2{b},则对子列表的有序合并即形成了局部有序列表new_arr{a,b},迭代进行即可形成最终有序列表。示例以整型数组{2,9,11,5,7,20,8}为例,根据归并定义可知:原始列表:2->9->11-原创 2016-10-28 18:49:46 · 458 阅读 · 0 评论
分享