排序方法有哪几种(排序方法)
大家好,今日小科来聊聊一篇关于排序方法有哪几种,排序方法的文章,现在让我们往下看看吧!
1、插入排序
2、插入是最简单、最直观的排序算法。它的工作原理是在排序后的序列中从后向前扫描未排序的数据,找到对应的位置并插入。
3、算法步骤:
4、1)要排序第一个序列的第一个元素被视为有序序列,第二个元素到最后一个元素被视为未排序序列。
5、2)从头到尾扫描无序序列,将每个扫描的元素插入有序序列的适当位置。(如果要插入的元素等于有序序列中的一个元素,则将要插入的元素插入到等于的元素之后。)
6、谢尔分类
7、Hill排序,也称为降序增量排序算法,是插入排序的一个更高效的改进版本。然而,希尔排序算法是不稳定的。
8、希尔排序基于插入排序的以下两个属性:
9、在对几乎排序的数据进行操作时,插入排序是高效的,即可以达到线性排序的效率。
10、但是插入排序一般效率很低,因为插入排序一次只能移动一位数据。
11、Hill排序的基本思路是:首先,将待排序的整个记录序列分成若干子序列进行直接插入排序。当整个序列中的记录都是“基本有序”时,直接插入所有记录并依次排序。
12、算法步骤:
13、1)选择一个增量序列t1,t2,tk,其中titj,tk=1;
14、2)根据增量序号k,对序列进行k次排序;
15、3)每次排序时,根据对应的增量ti,将待排序的列分成若干个长度为m的子序列,每个子表直接插入排序。当增量因子只有1时,整个序列被当作一个表,表的长度就是整个序列的长度。
16、选择排序法
17、选择排序也是一种简单直观的排序算法。
18、算法步骤:
19、1)首先,在未排序的序列中找到最小(最大)的元素,并将其存储在已排序序列的开头。
20、2)继续从剩余的未排序元素中寻找最小(最大)的元素,然后放在排序后的序列的末尾。
21、3)重复第二步,直到所有元素都排序完毕。
22、冒泡排序
23、冒泡排序也是一种简单直观的排序算法。它反复访问要排序的序列,一次比较两个元素,如果它们的顺序不对,就切换它们。访问序列的工作一直重复到不需要交换为止,也就是说序列已经排序了。这种算法的名字来源于较小的元素会通过交换慢慢“浮”到序列的顶端。
24、算法步骤:
25、1)比较相邻元素。如果第一个比第二个大,两个都换。
26、2)对每对相邻的元素做同样的工作,从开头的第一对到结尾的最后一对。在这一步之后,最后一个元素将是最大的数字。
27、3)对除最后一个元素之外的所有元素重复上述步骤。
28、4)每次对越来越少的元素继续重复上述步骤,直到没有任何要比较的数字对。
29、合并分类
30、归并排序是一种基于归并操作的有效排序算法。这个算法是分而治之的典型应用。
31、算法步骤:
32、申请一个大小为两个排序序列之和的空间,这个空间用来存放合并后的序列。
33、设置两个指针,初始位置分别是两个排序序列的起始位置。
34、比较两个指针指向的元素,选择一个相对较小的元素放入合并空间,将指针移动到下一个位置。
35、重复步骤3,直到指针到达序列的末尾。
36、将另一个序列的所有剩余元素直接复制到合并序列的末尾。
37、快速排序
38、快速排序是由Tony Hall开发的一种排序算法。平均来说,对N个项目进行排序需要 (n log n)次比较。在最坏的情况下,需要进行 (N2)比较,但这种情况并不常见。事实上,快速排序通常比其他 (n log n)算法快得多,因为其内部循环可以在大多数架构中高效实现。
39、快速排序使用分治策略将一个列表分成两个子列表。
40、算法步骤:
41、1从序列中挑出一个元素,称之为“pivot”。
42、2重新排列顺序,所有小于基准值的元素放在基准前面,所有大于基准值的元素放在基准后面(相同的数字可以在两边)。在这个分区退出后,基准位于系列的中间。这称为分区操作。
43、3递归排序小于参考值的元素子系列和大于参考值的元素子系列。
44、在递归的最底层,序列的大小是零或一,也就是一直排序下去。虽然它一直在递归,但这种算法总是会退出,因为在每次迭代中,它至少会将一个元素放到最后一个位置。
45、堆排序
46、堆排序是指利用堆的数据结构设计的一种排序算法。Heap是一种类似于完全二叉树的结构,同时满足heap的性质:即子节点的键值或索引总是小于(或大于)其父节点。
47、堆排序的平均时间复杂度为 (nlogn)。
48、算法步骤:
49、1)创建一个堆H[0.n-1]
50、2)交换反应器的头部(最大值)和尾部。
51、3)将堆的大小减少1,并调用shift_down(0)以便将新数组顶部的数据调整到相应的位置。
52、4)重复步骤2,直到堆栈的大小为1。
53、基数排序
54、基数排序是一种非比较整数排序算法。它的原理是把整数按照位数切割成不同的数,然后按照每个位数进行比较。由于整数也可以用特定格式表示字符串(如姓名或日期)和浮点数,所以基数排序不仅可以用于整数。
55、在讨论基数排序之前,我们先简单介绍一下桶排序:
56、算法思路:将数组分成有限个桶。每个桶都是单独排序的(可以使用另一种排序算法,或者继续以递归方式使用桶排序来排序)。桶排序是鸽巢排序的归纳结果。当数组中要排序的值均匀分布时,桶排序使用线性时间( (n))。但桶排序不是比较排序,不受O(n log n)下限的影响。简单来说,就是将数据分组,放入桶中,然后对每个桶中的数据进行排序。
57、例如,要对n个整数A[1.n]在[1.1000]
58、首先,您可以将bucket设置为范围10。具体来说,让集合B[1]存储整数[1.10],集合B[2]存储(10.20],集合B[i]存储((i-1)*10,i*10)的整数。总共有100桶。
59、然后,扫描一个[1.n]从头到尾,并将每个A[i]放入对应的桶B[j]中。然后对这100个桶中的数字进行排序。这时候可以使用冒泡,选择,甚至快速排序。一般来说,任何排序方法都可以。
60、最后依次输出每个桶中的数字,每个桶中的数字从小到大输出,这样就得到一个所有数字排列的序列。
61、假设有n个数字和m个桶。如果数字均匀分布,平均每个桶中有n/m个数字。如果
62、如果对每个桶中的数字进行快速排序,则整个算法的复杂度为
63、O(n m * n/m * log(n/m))=O(n nlognnlogm)
64、从上式可以看出,当m接近n时,桶排序复杂度接近O(n)。
65、当然,上述复杂度的计算是基于输入的N个数均匀分布的假设。这个假设很强,但是在实际应用中效果并不是那么好。如果所有的数字都落在同一个桶里,它就退化成一个一般的排序。
66、上面提到的大部分排序算法的时间复杂度为O(n2),也有一些排序算法的时间复杂度为O(nlogn)。但是桶排序可以实现O(n)的时间复杂度。但是桶排序的缺点是:
67、1)首先空间复杂度比较高,额外成本大。排序有两个数组的空间开销,一个是存储要排序的数组,一个是所谓的桶。比如要排序的值是从0到m-1,那么就需要M个桶,这个桶数组至少需要M个空格。
68、2)其次,要排序的元素必须在一定范围内等等。
69、稳定性、时间复杂度、空间复杂度和各种类型的稳定性汇总如下图所示:
70、时间复杂度:
71、(1)平方顺序(o(n ^ 2))排序:直接插入、直接选择、冒泡排序;
72、(2)线性对数序(O(nlog2n))排序、快速排序、堆排序和归并排序;(3) O (n (1))排序,并且(是0和1之间的常数。Hill排序(4)线性排序(O(n))排序基数排序,此外还有桶和箱排序。
73、关于稳定性:
74、稳定排序算法:冒泡排序、插入排序、归并排序和基数排序。
75、不是一个稳定的排序算法:选择排序,快速排序,希尔排序和堆排序。
本文到此结束,希望对大家有所帮助。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
兰博基尼Urus作为超豪华SUV市场的明星车型,凭借其强大的性能和独特的设计吸引了众多豪车爱好者。2023款Urus的...浏览全文>>
-
2023款北京U5 PLUS是一款性价比较高的紧凑型轿车,以其亲民的价格和丰富的配置吸引了许多消费者的关注。根据...浏览全文>>
-
2024款丰田赛那SIENNA凭借其宽敞的空间、卓越的舒适性以及丰富的配置,成为家庭用车的理想选择。目前该车型在...浏览全文>>
-
奥迪Q5 e-tron作为一款纯电动SUV,起售价约39 55万元(根据配置不同有所浮动)。它基于MEB平台打造,提供单...浏览全文>>
-
2025款上喆吉姆尼以其复古硬派风格和强劲越野性能再次成为焦点。目前,该车型的官方指导价区间为18万至25万元...浏览全文>>
-
沃尔沃XC60新能源是一款结合了豪华与环保的中型SUV。其价格因配置和驱动方式不同而有所差异。目前在售的车型主...浏览全文>>
-
2025款阿斯顿·马丁Vanquish作为一款超豪华GT跑车,凭借其卓越的性能与奢华的设计吸引了众多车迷的关注。该车...浏览全文>>
-
2023款缤纷新车在配置上进行了全面升级,外观更加时尚动感,内饰则更显精致与科技感。动力系统方面,新车搭载...浏览全文>>
-
途昂X作为上汽大众旗下的高端SUV,凭借其硬朗的外观设计、豪华的内饰配置以及强劲的动力表现,深受消费者喜爱...浏览全文>>
-
英力士Grenadier(掷弹兵)是一款以复古设计与现代技术结合的硬派越野车,试驾时需注意以下流程与事项:首先,...浏览全文>>
- Vanquish新车报价2025款,最低售价499.80万起,购车攻略来了
- 英力士Grenadier 掷弹兵试驾的流程及注意事项
- smart精灵#5试驾,快速操作,轻松体验驾驶乐趣
- 航海家 2025新款价格,豪华配置超值价来袭
- 别克昂科威试驾怎么预约
- 海马7X新能源试驾预约,体验极致驾驶乐趣
- 保时捷Taycan试驾,开启豪华驾驶之旅
- 大拿M1试驾预约的流程是什么
- 东风小康C36II多少钱 2024款落地价大揭秘,各配置车型售价一览表
- 东风御风P16预约试驾,快速通道开启豪华体验
- 五菱星云新款价格2023款多少钱?购车宝典与优惠全攻略
- 东风风神E60试驾的流程及注意事项
- 试驾风行T5 EVO,新手必知的详细步骤
- iCAR V23试驾预约需要注意什么
- 五菱雪宝价格,最低售价16.08万起现在该入手吗?
- 湖北武汉T-ROC探歌 2025新款价格限时特惠,最低售价11.19万起,错过不再有
- 东风风神AX7试驾预约,感受豪华与科技的完美融合
- 斯柯达柯米克试驾预约,体验极致驾驶乐趣
- 依维柯欧霸试驾有哪些途径
- 远程汽车远程锋锐试驾预约,开启豪华驾驶之旅