C# Introsort(内观排序)
发布时间:2013-09-29 19:35 来源/作者:藕码网 分类:其他
TAG标签:
根据维基百科所说,这个排序算法首先从快速排序开始,当递归深度超过一定深度(深度为排序元素数量的对数值)后转为堆排序。
- 运行环境:.NET2.0以上
- 授权方式:开源
- 下载积分:免费
- 推荐等级:★★★
- 更新时间:2013-09-29
- 演示地址:暂无
- 代码详情
- 用户评论
- 相关代码
-
根据维基百科所说,这个排序算法首先从快速排序开始,当递归深度超过一定深度(深度为排序元素数量的对数值)后转为堆排序。
采用这个方法,Introsort既能在常规数据集上实现快速排序的高性能,又能在最坏情况下仍保持 O(N log N) 的时间复杂度。
由于这两种算法都属于比较排序算法,所以Introsort也是一个比较排序算法。
按我的理解可以说是快速排序+插入排序+堆排序的混合方式;
优化过的快速排序:
1.利用基于三中值分区的中枢值来做快排;
2.设定一个使用切分时数组长度的最小值,如果小于这个值,就使用插入排序(这个最小值根据经验给定,一般设定为16);
3.监视快排的递归深度,以确保高效的处理。如果快排递归深度超过log(n)级,那么内观排序切换到堆排序。
-
最新评论
菜单/ Menu