171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
来源:互联网 发布:百度人工智能平台接入 编辑:程序博客网 时间:2024/06/05 19:34
又见老师编程能力。。。
每次上机,自己之前看过的、想了想没有很具体的思路的题目,到了老师那都是一个评价:
“这很简单啊。”
………
一.如何对一个数组排序,并且输出时能够同时输出其原数组的下标?
初步考虑的时候想用二维数组(a[][]不是有俩下标嘛?换一个留一个当储存啊),仔细想想这属于想偏了。
忽视了其存储结构,也完全没想过怎么把下标输出来。
老师只提了一句,这一句就足够惊醒梦中人了:你用俩数组呗,一个用来排序,一个用来放下标值。当由于排序发生下标值变化时,另一个同时变化(僚机?)
原码如下:(请忽视丧心病狂的子函数。。)
#include<iostream>#include<cstdlib>#include<ctime>using namespace std;void max(int a[],int b[])//没爱操心,还是按照n是10写出来的。 { int temp,i,j; for(i=0;i<=8;i++)//比较,从第一项跑到倒数第二项。 { for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp;//a[i]去偷a[j]的值。 temp=b[i]; b[i]=b[j]; b[j]=temp;//存下标的数组也排序。 这么长的代码就这点最值钱。。 } } } cout<<"由大到小为:"<<endl; for(i=0;i<=9;i++) { cout<<a[i]<<" (原下标:)"<<b[i]<<endl; } }void eva(int a[],int n){ srand(time(NULL)); int i; for(i=0;i<n;i++) { a[i]=rand(); }}void natureva(int a[],int n){ int i; for(i=0;i<n;i++) { a[i]=i; }}int main(){ int a[10],b[10]; eva(a,10); natureva(b,10); int i; for(i=0;i<10;i++) { cout<<a[i]<<" "<<b[i]<<endl; } max(a,b); }
二.这个问题是这个意思:
有两个数组,已经按一定顺序排好,请实现将两个数组的元素按同样的规则混在一起形成新的排序。
思路还是有的,只是实现的时候具体一些细节要动脑筋。
原码:
(乌龙:学会随机数之后能偷懒不输入就不输入,所以这里形成两个数组原始数据因为都用了随机数,所以两个数列是一毛一样的。。很头秃)
void renew(int a[],int b[], int c[])//可以重新排序的函数{ int i=0,j=0,k=0; for(k=0;k<=19;k++) { if(a[i]>=b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } } }
#include<iostream>#include<cstdlib>#include<ctime>using namespace std;void eva(int a[],int n){ srand(time(NULL)); int i; for(i=0;i<n;i++) { a[i]=rand(); }}void max(int a[]){ int temp,i,j; for(i=0;i<=8;i++) { for(j=i+1;j<=9;j++) { if(a[i]<a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp;//a[i]去偷a[j]的值。 } } } cout<<"由大到小为:"<<endl; for(i=0;i<=9;i++) { cout<<a[i]<<endl; } }void renew(int a[],int b[], int c[])//可以重新排序的函数{ int i=0,j=0,k=0; for(k=0;k<=19;k++) { if(a[i]>=b[j]) { c[k]=a[i]; i++; } else { c[k]=b[j]; j++; } } } int main(){ int a[10],b[10],c[20],i; eva(a,10); eva(b,10); for(i=0;i<10;i++) { cout<<a[i]<<" "<<b[i]<<endl; } max(a);max(b); renew(a,b,c); cout<<"重新排序后得到的新数组为:"<<endl; for(i=0;i<=19;i++) { cout<<c[i]<<endl; }}
阅读全文
0 0
- 171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
- 将两个数组合并为一个数组并排序
- 1. Two Sum 给定一个数组和一个数,输出两个和为给定数的数组元素的下标
- 查找一个数组中第二大的数的下标并输出
- 用冒泡排序排列数组中的数字,并按一定顺序输出结果
- 数组下标的排序
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132
- 分治策略求解子数组最大和并输出下标
- 利用for循环和条件运算符输出一个数组中最大和最小值并分别输出下标
- 初始化一个数组并输出数组的值(有前到后)
- 定义一个10元素的数组,给其赋值,每个值等于其下标,输出;然后倒排序再输出
- 面试题,小程序,在一个排序完毕的数组中,按顺序插入一个数
- 数组排序,并返回排序后的数组对应原数组的下标(c语言)
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 简单编程(二十)将奇数和偶数分别存入到两个不同的数组中,并按奇数、偶数交替的顺序输出
- 实现一个函数,传递一个有10个已经排好序的整形元素数组(数组大小实际为11)中,将一个指定的值按顺序插入,并在main函数中将插入后的数组输出。
- 增加一个数组并赋初值,输出按成绩排序后的同学的名单
- 增加一个数组并赋初值,输出按同学姓名排序后的成绩单
- Android:百度地图定位,完整代码奉上
- 获取 ESXi 服务器证书及 thumbprint 的三种方式
- 二叉树的周游
- c++日期类的实现(基础篇)
- springmvc的接参与传参
- 171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
- 文档总结18-C语言中的函数
- Android入门基础:从这里开始
- DELPHI中不同类型的动态数组变量共享内存
- vim基础学习
- LeetCode 分类练习(2)—— 三向切分 partition 思想的应用
- ArcGISEngine二次开发(5):添加矢量要素
- Mysql主从同步(复制)
- 小波变换教程(十九)