不同的排序方式,如有错误请评论指出,我会及时更改
冒泡排序及其优化
冒泡排序 稳定排序,平均复杂O(n^2) 最优 O(n)
选择排序
//选择排序,选择最小和开始交换
好坏平均复杂度 O(n^2) 不稳定
插入排序
插入排序 稳定排序 时间O(n^2)
快排及其优化
快排 不稳定排序 O(nlogn) 还有多路快排优化
- 初始版本
- 增加随机数
- 三路快排
三路快排,分三部分,1小于tmp部分,等于tmp部分,大于tmp部分
2022.3.15 全新版本
归并排序
稳定排序 时间O(nlogn) 空间O(n) 有多路归并
归并可以结合很多其他知识 链表,树等等,分治思想很重要(至少面试会问)
海量数据排序可以使用多路归并
希尔排序
间隔插入排序 懒得写了
堆排序
堆排序 不稳定 时间复杂O(nlogn)
建堆时间复杂度为O(n) 计算方式参考
topk问题,优先队列实现,建议手动写堆写下合并链表的题目
leetcode 合并k个排序链表,最优解使用优先队列,和堆有关
- 另外一种堆排写法,差不多
自行验证
数组中第k大元素
- 堆排序方式,大顶堆移除堆顶k-1次
- 快排方式,不需要完全排序,每次只排一遍
时间复杂度O(n)
以上就是本篇文章【golang 排序】的全部内容了,欢迎阅览 ! 文章地址:http://ww.kub2b.com/tnews/3638.html
栏目首页
相关文章
动态
同类文章
热门文章
网站地图
返回首页 企库往资讯移动站 http://ww.kub2b.com/mobile/ , 查看更多