温故知新-排序算法笔记

初级排序

选择排序

不断选择剩余元素的最小者

$O(N^2)$

插入排序

将后续元素插入到已经有序的元素适当的位置

$O(N^2)$

希尔排序

每次对N有序子数组进行 插入排序 ,然后减少N,重复对有序子数组进行 插入排序,直到N为1

对于中等数量级,通常只慢高级排序一点,实现简单,适合嵌入式开发

归并排序

分治策略:先排序左半部分,再排序右半部分,最后合并,合并需要使用额外N控件的中间数组

$O(NlogN)$

快速排序

分治策略:将数组分为三部分,比元素v小的元素,v元素,比v大的元素,可以理解这是一种入座算法,通过不断让元素入座(同时保证左子树都小于右子树),实现整体数组有序。

注意需要事先Shuffle,不然最多需要 $N^2/2$ 比较

优化:熵最优(大量重复元素情况),小数组使用插入排序,三取样(切分数尽量为中位数)

优先队列

适用于流式输入,插入通过上浮,删除通过下沉来实现有序

堆排序,先下沉后上浮

https://en.wikipedia.org/wiki/Sorting_algorithm

转载于:https://www.cnblogs.com/enigmaxp/p/9635465.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值