171122—数组程序练习(排序并输出下标&两个数组按顺序排成一个)
2017-11-22 23:53
211 查看
又见老师编程能力。。。
每次上机,自己之前看过的、想了想没有很具体的思路的题目,到了老师那都是一个评价:
“这很简单啊。”
………
一.如何对一个数组排序,并且输出时能够同时输出其原数组的下标?
初步考虑的时候想用二维数组(a[][]不是有俩下标嘛?换一个留一个当储存啊),仔细想想这属于想偏了。
忽视了其存储结构,也完全没想过怎么把下标输出来。
老师只提了一句,这一句就足够惊醒梦中人了:你用俩数组呗,一个用来排序,一个用来放下标值。当由于排序发生下标值变化时,另一个同时变化(僚机?)
原码如下:(请忽视丧心病狂的子函数。。)
二.这个问题是这个意思:
有两个数组,已经按一定顺序排好,请实现将两个数组的元素按同样的规则混在一起形成新的排序。
思路还是有的,只是实现的时候具体一些细节要动脑筋。
原码:
(乌龙:学会随机数之后能偷懒不输入就不输入,所以这里形成两个数组原始数据因为都用了随机数,所以两个数列是一毛一样的。。很头秃)
每次上机,自己之前看过的、想了想没有很具体的思路的题目,到了老师那都是一个评价:
“这很简单啊。”
………
一.如何对一个数组排序,并且输出时能够同时输出其原数组的下标?
初步考虑的时候想用二维数组(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;
}
}
相关文章推荐
- KO中对象数组排序时,两个属性的优先顺序不一致时的排序实现
- java程序:一个排序好的数组,增加一个数插入到合适的位置保存到另外个数组,输出
- 剑指offer 01-06解答思路以及代码(顺序数组找特定数字,替换空格字符,链表反转输出,重建二叉树,两个栈实现队列效果,旋转数组最小元素)
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132
- java小程序——给数组随机赋值,查找输入的值以及冒泡和选择排序数组并输出
- 从键盘输入20个整数将奇数&偶数分别存在不同的数组中并按先奇数后偶数的顺序输出这两个数组中的数据
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 输入两个数组 把两个数组内元素从大到小顺序输出
- C# 合并两个int数组 合并后根据大小排序 并输出
- c语言经典的排序函数swap():输入的两个整数按大小顺序输出。
- 编程练习:合并两个数组(包括三种快排程序)
- 分享两个JavaScript打乱数组顺序实现随机排序洗牌的方法(应用于音乐视频的随机播放等)
- 【Java实现】给出两个整型数组,将他们合并后从小到大排序并输出
- 171121—数组程序练习(随机数,排序,作为传值参数)
- LeetCode练习 两个排序数组的中位数
- 面试题,小程序,在一个排序完毕的数组中,按顺序插入一个数
- 一月十日练习习题,1数组数据存入字典并输出2降序 和倒叙 输出数组中内容3对字符串当中信息进行查找是否存在4 把数组当中信息按照中文排序
- 初识.net界面程序(4)——数组排序和计算练习
- 用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序(数组)