算法之每日一题:找出无序数组中第k大的数字
来源:互联网 发布:poi采集软件 编辑:程序博客网 时间:2024/05/07 23:05
#include <iostream>#include <string>#include <conio.h>using namespace std;#define arrayLen(arr) (sizeof(arr)/sizeof(arr[0]))int* sort(int data[],int len) { int temp; bool flag = false; for (int i = 0; i < len - 1; i++) { flag = true; for (int j = 0; j < len - i - 1; j++) { if (data[j] < data[j + 1]) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; flag = false; } } if (flag) { break; } } return data; } void show(int data[],int len) { for (int q = 0; q < len; q++) { printf("%d ",data[q]);} printf("\n");} /* http://t.jobdu.com/thread-98593-1-1.html 题目: 找出无序数组中第k大(or小)的数字 扩展: 找出无序数组中第k大的数字,并输出其所在的位置。例如{2,4,3,10,7}中,第2大的数是7,位置在4【百度面试题】。 */int main( int argc, char* argv[] ){int datas[]={2,4,3,10,7};//这里可以改成用户从cmd终端输入//int len = sizeof(datas)/sizeof(int);int len = arrayLen(datas);printf("%d\n",len);show(datas,len);//拷贝数组int b[25];for(int i=0;i<len;i++){*(b+i) = *(datas+i);}sort(datas,len);show(datas,len);//show(b,len);int k=-1;//第k大cout<<"输入第k大"<<endl;cin>>k;if(k<0|| k>len){cout<<"输入无效整数"<<endl;return -1;}int loc=-1;for(int i=0;i<len;i++){if(b[i]==datas[k-1]){loc=i;}}cout<<"输入第"<<k<<"大数是"<<datas[k-1]<<",位置在"<<loc<<endl;getch();return 0;}
结构体数组初始化和遍历
#include <iostream>#include <string>#include <conio.h>using namespace std;#define arrayLen(arr) (sizeof(arr)/sizeof(arr[0]))#define entitysLen 5struct Entity{int oldindex;int value;};Entity* sort(Entity data[],int len) { Entity temp; bool flag = false; for (int i = 0; i < len - 1; i++) { flag = true; for (int j = 0; j < len - i - 1; j++) { if (data[j].value < data[j + 1].value) { temp = data[j]; data[j] = data[j + 1]; data[j + 1] = temp; flag = false; } } if (flag) { break; } } return data; } //遍历结构体数组 void show(Entity data[],int len) { for (int q = 0; q < len; q++) { printf("%d ",data[q].value);} printf("\n");} /* http://t.jobdu.com/thread-98593-1-1.html 题目: 找出无序数组中第k大(or小)的数字 扩展: 找出无序数组中第k大的数字,并输出其所在的位置。例如{2,4,3,10,7}中,第2大的数是7,位置在4【百度面试题】。 */int main(int argc, char* argv[] ){int datas[]={2,4,3,10,7};//这里可以改成用户从cmd终端输入//结构体数组初始化Entity entitys[entitysLen]={0};//Entity entitys[12]={{0,12},{1,23}};for(int i = 0; i < entitysLen; i++){//printf("%d\n", entitys[i].oldindex);scanf("%d",&entitys[i].value);entitys[i].oldindex=i;}show(entitys,entitysLen);sort(entitys,entitysLen);show(entitys,entitysLen);int k=-1;//第k大cout<<"输入第k大"<<endl;cin>>k;if(k<0|| k>entitysLen){cout<<"输入无效整数"<<endl;return -1;}cout<<"输入第"<<k<<"大数是"<<entitys[k-1].value<<",原来位置在"<<entitys[k-1].oldindex<<endl;getch();return 0;}
0 0
- 算法之每日一题:找出无序数组中第k大的数字
- 算法设计--查找无序数组中第K大的数字
- 无序数组找出其中的第K大的数
- 在一个无序整型数组中找出第k小的数字
- 每日一题之找出频率>1/k的数字
- java 实现从无序数组中 找出第k大的数, 无序数组充许有重复元素
- 面试题—— 找出一个无序整型数组中第k大的数。
- 算法导论:快速找出无序数组中第k小的数
- 寻找单个无序数组中第K小的数字
- 一个无序数组中第K大的元素
- 由无序数组中找到第K 大的元素
- 无序数组中找到第k大的元素
- 寻找无序数组中第k大的数
- 在无序数组中找到第k大的数
- 算法(三)找出数组中第K大元素
- 算法题(一)--找出数组中第k大的数并输出其下标(数组中的数有重复)
- 【数据结构与算法分析】1.1 找出N个数字中第K大的数
- 找出第K大的数字
- 黑马程序员_java面向对象_抽象类和接口
- HDU 3488 HDU3435 HDU 1853 (最小费用流或者最大完美匹配)
- oracle11g行列转换
- opengl函数功能详解
- AngularJS使用 ng-disabled 属性与ng-model搭配,实现禁用button效果
- 算法之每日一题:找出无序数组中第k大的数字
- VMware虚拟机下调整ubuntu14.04界面大小
- Tomcat Https 单向认证简单配置
- Cocos2d-JS 创建node节点示例
- 使用rpmbuild 进行rpm 打包
- C#图像遍历(续)
- Android CheckBox自定义
- CodeForces 13A - Numbers
- Java 英文首字母大写