常见排序

*插入排序
(1)直接插入,对比元素和从头到尾每个元素的关系,把一个元素插入到一个有序的数组。
(2)折半插入,参考二分算法,找到大于元素的那个位置,把元素插到它的前面,也是插入到有序数组。
(3)希尔排序也是插入排序的一种,又叫做缩小增量排序。就是把一组元素分成n组,0,0+n,0+2n…1,1+n+1…
让序列逐步变成有序的序列。不稳定
*交换排序
(4)冒泡排序,每次都把序列中最大的找出来放在最右边,然后再找下一次的最大的,把所有的最大整理起来就排好序了。如果有n个数,就要找n-1次最大,在内层循环的时候j+i=n-1;注意j要从1开始才能保证j-1大于等于0。
(5)快速排序,每次确定一个pivot元素,然后找到这个元素应该在排序后的哪个位置,就是让pivot元素前面的数值都小于它,让后面的数值都大于它。这个找完了就可以划分成左边和右边,依次对左边和右边递归调用上面那个步骤(分别设置pivot元素)。不稳定。
*选择排序
(6)直接选择排序,前面是有序序列,后面是无序序列,从后面的无序序列里面选择最小的插入到前面的有序序列里面。
(7)堆排序,首先要理解大根堆和小根堆的含义,也就是在序列里面符合的关系。
小,l(i)<l(2i); l(i)<l(2i+1)
大,l(i)>l(2i); l(i)>l(2i+1)
然后把大根堆和小根堆变成完全二叉树,对完全二叉树排序就是进行堆排序了。
(8)归并排序,把相邻n个(比如2个的时候就叫做二路归并排序)归并成一个有序的小矩形,按照这个方法进行递归调用。
(9)基数排序使用的就是分配、收集的思路。首先按照最后一位把所有数字分配到Q0到Q9这10个队列里面,然后从大到小取出。然后依次倒数着把前几位也分配到十个队列里面,重复这个步骤。这是稳定排序方式。

内部排序就是整个序列可以放到内存里面进行排序,外部排序就是序列的长度远远超过内存所能存放的,把它分成几个部分排序。

posted @   花与不易  阅读(50)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示