20170927_快排应用_数组中寻找最小的K个数
来源:互联网 发布:126邮箱ssl协议端口号 编辑:程序博客网 时间:2024/05/22 15:04
20170927_快排应用_数组中寻找最小的K个数
在数组中寻找最小的 K 个数:
例如,输入:4,5,1,6,2,7,3,8 这8个数字,
输出最小的4个数是:5,6,7,8
/*在数组中寻找最小的k个数例如,输入:4,5,1,6,2,7,3,8 这8个数字,输出最小的4个数是:5,6,7,8*/#include<iostream>#include<vector>#include<algorithm>#include<numeric>using namespace std;class Solution{public:void GetMinKthNumbers(vector<int> &input, vector<int> &res, int k){int n=input.size();if(k>n || n<=0 || k<=0)return;int start=0;int end=n-1;int index=partion(input,start,end);//返回的是第(index+1)小元素值while(index!=k-1){if(index>k-1){end=index-1;index=partion(input,start,end);}else{start=index+1;index=partion(input,start,end);}}for(int i=0; i<k; ++i)res[i]=input[i];}public://快速排序的一次划分函数int partion(vector<int> &input, int start, int end){int n=input.size();if(n<1)return -1;int i=start;int j=end;while(i<j){while(i<j && input[i]<=input[j])--j;if(i<j){swap(input[i],input[j]);++i;}while(i<j && input[i]<=input[j])++i;if(i<j){swap(input[i],input[j]);--j;}}return i;}};int main(void){//int input[]={4,5,1,6,2,7,3,8};int ch=0;vector<int> input;while(cin>>ch)input.push_back(ch);int n=input.size();cin.clear();//换行,清除输入缓冲!!!int k=0;cin>>k;vector<int> res(k);class Solution object;object.GetMinKthNumbers(input,res,k);for(auto mem:res)cout<<mem<<",";cout<<endl;system("pause");return 0;}
阅读全文
0 0
- 20170927_快排应用_数组中寻找最小的K个数
- 20170927_快排应用_数组中寻找最大的K个数
- 20170927_快排应用_数组中寻找第K小的数字
- 20170927_快排应用_数组中寻找第K大的数字
- 寻找数组中最小的k个数(快排和堆排)
- 寻找数组中最小的k个数(快排和堆排)
- 寻找数组中最小的k个数(快排和堆排)
- 26.最小的K个数:快排应用
- 寻找数组中最小的k个数 "最小堆方法"
- 算法杂谈--寻找数组中最小的k个数
- 在无序数组中寻找最小的k个数
- 找出无序数组最小的K个数(基于快排,效率高)
- 20170927_快排应用_将数组中的大小写字母分开
- 20170927_利用大根堆求出最小的K个数
- 20170927_快排应用_荷兰国旗问题
- 寻找无序数组中第k大的数——快排思想
- 寻找数组中最大的K个数
- 寻找最小的k个数
- Java 多线程同步的五种方法
- 冒泡排序算法研究
- rsyslog 配置文件说明
- Linux学习笔记--执行带Jar包的class文件
- ionic3的自定义图标引入
- 20170927_快排应用_数组中寻找最小的K个数
- MySQL在创建数据表的时候int(3)和int有什么区别?
- 一个牛逼的 字符串拷贝函数
- dubbox编译安装本地maven仓库
- 1089: 最短路入门2(道路重建)
- Docker容器通过独立IP暴露给局域网的方法
- 递归查找
- HDU 1237 简单计算器(中缀表达式求值)
- 并查集