快速选择算法 C++实现
来源:互联网 发布:java 指定jdk 编辑:程序博客网 时间:2024/06/07 05:25
快速选择算法
今天早上想起来了,然后就学了一下,然后发现……这特喵不就是快排删了一半么,总的来说算法本身挺简单的,就是时间复杂度不太好预期(感觉实用性真的不高啊,这个算法)
不过还是写了一下。
不支持C++的语法高亮难受
template< class RandomIt >inline RandomIt _find_nth_smaller_element(RandomIt * _first,RandomIt * _last,size_t nth){ RandomIt * first = _first; RandomIt * last = _last - 1; auto key = *first; while(first != last) { while(first != last && key < *last) last--; *first = *last; while(first != last && !(key < *first)) first++; *last = *first; } *first = key; //快排partition过程 if(first - _first == nth - 1) return key; else if(first - _first > nth - 1) return _find_nth_smaller_element<RandomIt>(_first , first, nth); else return _find_nth_smaller_element<RandomIt>(first + 1 , _last , nth - (first - _first) - 1); //然后选取元素所在的区间进行快排就行了}
阅读全文
0 0
- Objective-C实现冒泡,选择,插入,快速排序算法
- objective-c 实现常用算法(冒泡、选择、快速、插入)
- 快速选择SELECT算法实现
- 选择、快速排序算法实现
- c++实现快速选择算法
- 快速选择算法 C++实现
- C 排序算法 (冒泡)(选择)|(插入)|(快速)
- 快速选择算法的一个简单实现
- 算法2-快速选择(java实现)
- 快速选择SELECT算法的实现
- java实现冒泡、选择、快速排序算法
- java实现冒泡、选择、快速排序算法
- 常见排序算法(冒泡,选择,快速)的C语言实现
- 常见排序算法(冒泡,选择,快速)的C语言实现
- 常见排序算法(冒泡,选择,快速)的C语言实现
- 常见排序算法(冒泡,选择,快速)的C语言实现
- 常见排序算法(冒泡,选择,快速)的C语言实现
- 用objective-c 实现常用算法(冒泡、选择、快速、插入)
- 第一篇博客
- Mysql my.cnf 优化
- 开源 JSON 库解析性能对比( Jackson / Json.simple / Gson )
- FragmentTabHost的应用,完美解决滑动的时候,一些问题
- 如何写好一个单例,并且考虑了线程安全?
- 快速选择算法 C++实现
- Python filecmp库
- SpringMVC详细实例
- Reactor模式和Proactor模式
- C++ 内存问题
- Spark SQL来读取现有Hive中的数据
- axure原型设计之二维码扫描框
- JSP 页面传值方法总结
- ueditor和springmvc集成