快速选择算法
来源:互联网 发布:中文移动域名 编辑:程序博客网 时间:2024/06/10 02:35
快速选择算法是基于快速排序算法的,目的是寻找一个无序表内的第k大(小)的元素。
快速排序:
快速排序的原理是把每次一个无序表以一个目标节点为中心,向左放比它小的,向右放比它大的。重复这一过程,就可以得到一个有序表。快速选择:
当快速排序要进行递归时,此时目标节点的下标m就是它在这个表内的位置。所以,我们可以通过比较k与m的关系,判断下一步应往那一个方向拓展,直到k=m,程序结束,返回该元素。
下面给出代码:
int QuickSelect(int *a, int left, int right, int k){ int mark = a[ left ]; int i = left; int j = right; while( i < j ) { while ( a[j] >= mark && i < j ) j--; a[i] = a[j]; while ( a[i] <= mark && i < j ) i++; a[j] = a[i]; } a[i] = mark; if( k < i + 1 ) return QuickSelect( a, left, i - 1 , k); else if( k > i + 1 ) return QuickSelect( a, i + 1, right, k); else return a[i];}
0 0
- 快速排序->快速选择算法
- 快速选择算法
- TopK-快速选择算法
- 快速选择算法
- 快速选择排序算法
- 快速选择select算法
- 快速选择算法
- 快速选择算法
- 快速选择算法
- 快速选择算法
- 快速选择算法
- 算法分析:快速选择
- 快速选择算法
- 快速选择算法
- 快速选择算法
- 查找算法---快速选择算法
- 快速、选择、冒泡排序算法
- 随机化快速次序选择算法
- js得到所有选中checkbox的值
- LeetCode_344. Reverse String
- fatal error C1083: 无法打开包括文件:“extensions/ExtensionExport.h”: No such file or directory (扩展库出错)
- (五十二)高并发服务器——多线程模型
- GitHub进一步了解
- 快速选择算法
- ZCMU-Tug of War
- 面向对象(下)
- Leetcode 96 - Unique Binary Search Trees(dp or Catalan)
- 深入理解Java内存模型(二)——重排序
- springmvc解析和输出json数据
- 算法——字节高低位交换
- 17 - 05 - 04 Web安全(33)
- shell