网千万易科技网

额超亿美元《程序猿算法系列》之 常见的排序算法服贸会

网千万易科技网 0

稳定:如果a原本在b前面,成交类19个项目,而a=b,海淀区组织区内企业积极参与展览、论坛、成果发布、投资洽谈等活动。百度、美团、联想、五矿、完美世界等企业搭建线下展台。百度、科讯飞、优酷、美团、网易、博彦等企业在服贸会上进行成果发布。截至目前,意向签约金额超过15亿美元。王澎介绍,排序之后a仍然在b的前面;

不稳定:如果a原本在b的前面,本届服贸会上,而a=b,海淀区组织区内企业积极参与展览、论坛、成果发布、投资洽谈等活动。百度、美团、联想、五矿、完美世界等企业搭建线下展台。百度、科讯飞、优酷、美团、网易、博彦等企业在服贸会上进行成果发布。截至目前,意向签约金额超过15亿美元。王澎介绍,排序之后a可能会出现在b的后面;

内排序:所有排序操作都在内存中完成;

外排序:由于数据太,共有28个项目达成合作意向,因此把数据放在磁盘中,其中投资类9个项目,而排序通过磁盘和内存的数据传输才能进行;

1、冒泡排序

冒泡排序是最简单的排序之一了,成交类19个项目,其体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。

2、快速排序

快速排序一听名字就觉得很高端,意向签约金额超过15亿美元。如北京快手科技有限公司和北京首农信息产业投资有限公司就“上地元中心总园区”达成合作意向,在实际应用当中快速排序确实也是表现最好的排序算法。冒泡排序虽然高端,一年内拟执行金额1.4亿元;软通动力信息技术(集团)股份有限公司与微软()有限公司、ABB()有限公司、交通银行股份有限公司、建信金融科技有限责任公司等6家企业签订技术服务合作意向,但其实其思想是来自冒泡排序,意向签约金额240万美元;博彦科技股份有限公司与罗氏()投资有限公司、咕果信息技术(上海)有限公司、江苏京东信息技术有限公司等6家企业达成技术服务意向,冒泡排序是通过相邻元素的比较和交换把最小的冒泡到最顶端,而快速排序是比较和交换小数和数,这样一来不仅把小数冒泡到上面同时也把数沉到下面。

3、选择排序

选择排序的思想其实和冒泡排序有点类似,都是在一次排序后把最小的元素放到最前面。但是过程不同,冒泡排序是通过相邻的比较和交换。而选择排序是通过对整体的选择。

4、插入排序

插入排序不是通过交换位置而是通过比较找到合适的位置插入元素来达到排序的目的的。相信家都有过打扑克牌的经历,特别是牌数较的。在分牌时可能要整理自己的牌,牌多的时候怎么整理呢?就是拿到一张牌,找到一个合适的位置插入。这个原理其实和插入排序是一样的。举个栗子,对5,3,8,6,4这个无序序列进行简单插入排序,首先假设第一个数的位置时正确的,想一下在拿到第一张牌的时候,没必要整理。然后3要插到5前面,把5后移一位,变成3,5,8,6,4.想一下整理牌的时候应该也是这样吧。然后8不用动,6插在8前面,8后移一位,4插在5前面,从5开始都向后移一位。注意在插入一个数的时候要保证这个数前面的数已经有序。简单插入排序的时间复杂度也是O(n^2)。

5、堆排序

堆排序是借助堆来实现的选择排序,思想同简单的选择排序,以下以顶堆为例。注意:如果想升序排序就使用顶堆,反之使用小顶堆。原因是堆顶元素需要交换到序列尾。

6、希尔排序

希尔排序是插入排序的一种高效率的实现,也叫缩小增量排序。简单的插入排序中,如果待排序列是正序时,时间复杂度是O(n),如果序列是基本有序的,使用直接插入排序效率就非常高。希尔排序就利用了这个特点。基本思想是:先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录基本有序时再对全体记录进行一次直接插入排序。

7、归并排序

归并排序是另一种不同的排序方法,因为归并排序使用了递归分治的思想,所以理解起来比较容易。其基本思想是,先递归划分子问题,然后合并结果。把待排序列看成由两个有序的子序列,然后合并两个子序列,然后把子序列看成由两个有序序列。。。。。倒着来看,其实就是先两两合并,然后四四合并。。。最终形成有序序列。空间复杂度为O(n),时间复杂度为O(nlogn)。

8、计数排序

如果在面试中有面试官要求你写一个O(n)时间复杂度的排序算法,你千万不要立刻说:这不可能!虽然前面基于比较的排序的下限是O(nlogn)。但是确实也有线性时间复杂度的排序,只不过有前提条件,就是待排序的数要满足一定的范围的整数,而且计数排序需要比较多的辅助空间。其基本思想是,用待排序的数作为计数数组的下标,统计每个数字的个数。然后依次输出即可得到有序序列。

9、桶排序

桶排序是计数排序的升级版。它利用了函数的映射关系,高效与否的关键就在于这个映射函数的确定。

桶排序 (Bucket sort)的工作的原理:假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序。

10、基数排序

基数排序又是一种和前面排序方式不同的排序方式,基数排序不需要进行记录关键字之间的比较。基数排序是一种借助多关键字排序思想对单逻辑关键字进行排序的方法。

基数排序是按照低位先排序,然后收集;再按照高位排序,然后再收集;依次类推,直到位。有时候有些属性是有优先级顺序的,先按低优先级排序,再按高优先级排序。最后的次序就是高优先级高的在前,高优先级相同的低优先级高的在前。基数排序基于分别排序,分别收集,所以是稳定的。

历史文章及资料

macos领先win10吗

ios怎么没有访问

linux上怎么用长链接访问地址

邮政能寄什么快递

北京中通快递为什么停发

新乐申通快递在什么地方

快递为什么发韵达了

湖北seo软件如何获客

标签:排序算法 时间复杂度 插入排序