快速排序搜索一个数组中第N大的数字
来源:互联网 发布:如何淘宝知识产权投诉 编辑:程序博客网 时间:2024/06/04 21:17
#include <iostream>#include "SortTestHelper.h"using namespace std;template <typename T>int __partition(T arr[], int l, int r) { swap( arr[l], arr[rand()%(r-l+1) + l] ); T v = arr[l]; int j = l; for (int i = l+1; i <= r; ++i) { if(arr[i] < v) { j++; swap(arr[j], arr[i]); } } swap(arr[j], arr[l]); return j;}template <typename T>void __quickSort(T arr[], int l, int r, int target) { if( l >= r) return; int p = __partition(arr, l, r); //arr[p]就是第p大的数据 if (p == target) { return; } else if(target > p) { __quickSort(arr, p+1, r, target); } else { __quickSort(arr, l, p-1, target); }}template <typename T>void quickSort(T arr[], int n, int target) { srand(time(NULL)); __quickSort(arr, 0, n-1, target);}int main() { srand(time(NULL)); int target = 7;//数组中需要查找顺序的所以,比如第6大的数据target = 5 int arr[8] = {2,13,8,7,7,5,4,10}; quickSort(arr, 8, target); int res = arr[target]; SortTestHelper::printArray(arr, 8); cout << "res: " << res; return 0;}output:4 2 5 7 7 8 10 13 res: 13
阅读全文
0 0
- 快速排序搜索一个数组中第N大的数字
- java实现通过快速排序来查找数组中第n大的元素
- 求一个整数数组中第N大的数
- 有一个整数数组,请你根据快速排序的思路,找出数组中第K大的数。 给定一个整数数组a,同时给定它的大小n和要找的K(K在1到n之间),请返回第K大的数,保证答案存在。
- 求n个数中第k大的数、前K大的数、快速排序
- O(n)算法得到数组中任意第k大的数字
- 求一个数字在数组中排序,顺序搜索
- 求n个数中第k大的数、快速排序
- 利用快速排序找到第k大的数字
- 巧妙利用快速排序法的原理求一个数组中的第10大元素
- (快排实例)查询一个数组中第n大的元素
- 利用快速排序思想找出数组中第K大的数
- 快速找到1到N中缺少的一个数字
- java实现快速排序的分割思想:在快速排序算法中,我们随机在数组中选择一个数字,然后把比选中数字小的数字都排在它前面,比选中数字大的数字都排在它的后面。
- 找包含N个元素的数组里第K大的元素(引申:快速排序、找中位数、找前K大的元素)的时间复杂度
- 47.数组中重复的数字(快速排序)
- 【java】快速排序 数组中超过一半的数字
- 求数组中第n大(小)的元素
- pgsql 启动关闭脚本
- ASP.NET MVC5+EF6+EasyUI 后台管理系统-MVC Excel导入和导出
- 关于Vue中nextTick()的思考
- shell下对文件夹的文件进行排序
- 51nod 1450 闯关游戏 期望dp
- 快速排序搜索一个数组中第N大的数字
- Linux—进程间通讯—信号量
- 查长时间运行事务
- JS中decodeURI()与decodeURIComponent()区别
- noteBook2.17-C#基础第十七天
- vxworks中断处理程序不能使用printf的本质
- Android与服务器通过Servlet进行双向通信
- centos 通过rsync实现远程文件同步
- python 3.X版本 利用urllib.request 通过制定的URL抓取网易内容