博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一道题两个有序的数组,如何找出两个数组合并后的第K大的数
阅读量:5057 次
发布时间:2019-06-12

本文共 1250 字,大约阅读时间需要 4 分钟。

#include 
#include
#include
using namespace std;//28/05/13 16:36//如果使用临时数组的话复杂度会减少很多。。。//搞了两个小时终于搞定了//关键在于//1、如何判定那个指针移动//2、数组b遇到最后一个元素时怎么办//3、数组a遇到最后一个元素怎么办//4、设定a的最大值比b的最大值大,就是为了是q指针先打到末尾,要不然很混乱 int main(int argc, char *argv[]){ //初始化数组 int a[]={
1,2,3,4,8,9,13}; int b[]={
2,2,6,7,12}; //计算数组长度 const int lena=sizeof(a)/sizeof(a[0]); const int lenb=sizeof(b)/sizeof(b[0]); //计算数组的最大值 const int maxa=a[lena-1]; const int maxb=b[lenb-1]; //pq指针分别指向数组的首元素 int *p=a; int *q=b; //设定计数器 ,使用静态值较好 static int count =0; // int k; cout<<"请输入第k大的k值:"; cin>>k; if(k<1||k>lena+lenb) { cout<<"输入数据不符合要求,请重新输入,亲!"<
>k; } //只考虑 当a数组最大元素大于b数组最大元素时 ,另外一种情况类推 if(maxa>maxb) { //循环结束的条件 ,都已到达数组的结尾 while(p<=a+lena-1 && q<=b+lenb-1 ) { //a的元素小于b的元素时 if(*p<=*q) { //先计数器加一 ++count; //如果满足k值输出此时a数组中的元素,跳出整个循环,不满足时语句不执行 if(k==count) {cout<<"第"<
<<"个数是="<<*p<

 

转载于:https://www.cnblogs.com/fickleness/archive/2013/05/28/3103922.html

你可能感兴趣的文章
设计模式:单例模式7种写法
查看>>
一个FragmentActivity多个Fragment的生命周期事件记录
查看>>
2019-06-03 python 深浅复制
查看>>
简单文件的写操作
查看>>
线程理论
查看>>
实验四 主存空间的分配和回收模拟
查看>>
第三课:控件的使用及按键响应-20160705
查看>>
第五周类的创建
查看>>
Webservice优缺点总结
查看>>
Recipe 1.4. Reversing a String by Words or Characters
查看>>
Rule 1: Make Fewer HTTP Requests(Chapter 1 of High performance Web Sites)
查看>>
sql注入
查看>>
「破解」Xposed强
查看>>
Linux 平台下 MySQL 5.5 安装 说明 与 示例
查看>>
src与href的区别
查看>>
ABAP工作区,内表,标题行的定义和区别
查看>>
《xxx重大需求征集系统的》可用性和可修改性战术分析
查看>>
selenium-Python之上传文件
查看>>
Python 中 创建类方法为什么要加self
查看>>
增强版的RecycleViewAdapter,能够直接使用
查看>>