排序算法
今夕何夕_1988
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
冒泡排序--简单排序
Bubble Sort 很简单的思路,两两比较,将较大值移动到后面,然后继续比下去,这样一轮之后最大值就到最后了。然后取前面的数,继续比较。 1、和简单选择排序同样的两层循环,外层循环控制次数,次数为length - 1,因为最后一个数不需要比较。 2、内层循环依次进行两两比较,并将较大值移往后面,这样一轮循环之后最大值到了最后一位 3、优化一:往前渐进,已经放到最后的就不用再比较了,每次...原创 2018-06-02 19:11:29 · 360 阅读 · 0 评论 -
快速排序--QuickSort,看完自己就能写出来的快排思路推演
QuickSort 首先发明者并没有给自己发明的算法叫做QuickSort,起这个名字也太托大了,是后来大家用的时候发现这个很快,才叫做QuickSort 工业上用的最多的排序方式 思路是,假设一个数组,我们可以用一种办法分成小数块和大数块,然后递归继续分成小数块和大数块,最后每一块都只有1个(或者0个)的时候,排序就完成了 为什么快速排序是冒泡排序的改进版? 这是个结论,或者说是事实,...原创 2018-06-05 22:38:48 · 5504 阅读 · 4 评论 -
基数排序--递归的计数排序
介绍:RadixSort另外一种非比较排序算法,基于计数排序(或者说桶排序)进行排序,也可以达到O(n)的复杂度。思路:计数排序==>桶排序达到O(n)的情况,要求桶中只有一个元素,或者只有相同的元素。这种如果数据的值跨度过大,或者过于离散,所需要的很多,因为中间的空的数字也会占桶的,导致空间浪费很多。基数排序很好了解决了这个问题,原始的思路不好推演,我们使用网上其它文章的扑克牌例子:假设想...原创 2018-06-12 22:43:10 · 734 阅读 · 0 评论 -
选择排序--最简单的排序
最容易想到的排序,给你一串数字,如何按照从小到大排序。我们可以从数字中找出最小的数,把它从旧的数据中剔除,放在新数组的第一位,然后从余下的数字中再找出最小的,放到第二位,这样一直找,直到原数组还剩下一位的时候,把这一位直接放到新数组的最后一位。我们也可以不新建数组,没有必要浪费这一倍的空间,在找到最小的数之后,把该位置和第一位互换,然后找到次小的和第二位互换,直到还剩下一位。推演代码的时候,先推演...原创 2018-05-30 22:11:52 · 315 阅读 · 0 评论 -
希尔排序--基于快速排序的高级排序
插入排序原创 2015-09-20 18:36:18 · 418 阅读 · 0 评论 -
归并排序--一种高级排序算法
归并排序(mergeSort) 归并排序是一种高级排序算法,速度仅次于快速排序,为稳定排序算法,没有对应的简单算法。 1、想法应该是从发现两个有序数组合成一个有序数组是O(n)开始的,如何将两个有序数据合成一个有序数组?依次从两个数组中取数进行比较,将较小的放入新数组。 准备两个索引i=0和j=0,逐个比较arrA[i]和arrB[j],将较小值给新数组,并将较小值所在数据的索引++,一旦某...原创 2018-05-31 21:15:24 · 280 阅读 · 0 评论 -
插入排序--简单插入排序+二分插入排序
假设我们手里的数字是一堆乱序扑克牌,我们想把它整理成从小到大的排序,会怎么办呢,我们会从左往右挨个将牌抽出来插到它合适的位置,这样一轮之后,就变成从小到大的顺序了。 程序上怎么实现,从第二位开始,逐个将后一个数和它之前所有的数据进行比较,寻找这个数最合适的插入位置,将其插入空隙,循环一边之后,可实现排序。 具体怎么写,假设要实现从小到大排序,写两层循环,外层循环从1开始直到最后,内层循环从当前原创 2018-05-31 21:47:13 · 2003 阅读 · 0 评论 -
堆排序--高级选择排序
堆排序是选择排序的一种,是简单选择排序的升级版,是效率最高的排序方法 先从二叉树开始补习。 堆: heap 百度百科: 堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 堆一定要一定程度的有序 大根堆/最大堆: 所有节点都比其左右子节...原创 2018-05-31 22:07:12 · 385 阅读 · 0 评论 -
排序算法总结一,简单排序算法
其中,简单的排序算法有:简单选择排序,冒泡排序,直接插入排序 从简单到复杂逐个简述,详细的论述及实现请看各自的文章 几种简单排序,算法的思路都很直接,复杂度都是n^2,我们假设是升序排序来描述 直接插入排序: 从第二个数开始,将每个数,插入前面已排好数的合适的位置。通过轮询找到合适的位置,该位置以及之后的数全部往后移动一位,将当前位置的数放到目标位置去,叫做插入排序。 由于前面的数组有序...原创 2018-06-08 22:44:21 · 292 阅读 · 0 评论 -
桶排序与计数排序--非比较排序算法1
算法介绍:BucketSort这个算法,提出的时候虽然很简单,但是满有意思的。非比较性的排序算法,也不知道大佬们怎么想到的,利用了数组下标的天然有序性,将元素作为新数组的下标放入新数组,然后循环输出新数组即可实现排序。简单而特殊的桶排序:假设一组数{3, 8 ,5, 8 ,4 ,2 ,7},我们可以准备一个新数组,将这个数组的值,作为另一个数组的下标。循环原数组,将值一个个的丢到对应的下标中,丢一...原创 2018-06-10 17:43:36 · 627 阅读 · 0 评论
分享