中易网

c/c++只用数组与循环,将20个数按大小排列

答案:6  悬赏:0  
解决时间 2021-01-16 07:32
c/c++只用数组与循环,将20个数按大小排列
最佳答案
#include
#define n 20
void main()
{ int a[20],t;
int i,j;
cout<<"请输入20个数据"<for(i=0;i<=19;i++)
cin>>a[i];
for(i=1;i<19;i++)
for(j=0;j<=19-i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
cout<<"排序后的结果是:";
for(i=20;i>=0;i--)
cout}
这个可以解决排序问题,也可以找出最大值,也就是第一个,你的问题不太清楚,你是不是不会给数组赋值啊?赋值要用循环的哦。不要忘记了
全部回答
前辈们已经给你整理了很多算法了,随便用一种就行。 前面几个兄弟提供的方法都可行。
你这个是选择排序啊,
你的问题应该是在循环那里错了。
我手头正好有个例子:
//选择排序法SelectionSort(int arr[],int n)
template <typename T>
void SelectionSort(T arr[],int n)
{
int smallIndex; //表中最小元素的下标
int pass,j; //用来扫描子表的下标
T temp; //用来交换表元素的临时变量
//pass的范围是0~n-2
for (pass=0;pass<n-1;pass++)
{
//从下标pass开始扫描子表
smallIndex=pass;
//j遍历整个子表arr[pass+1]到arr[n-1]
for(j=pass+1;j<n;j++)

if(arr[j]<arr[smallIndex])
smallIndex=j;
//如果smallIndex和pass不在相同的位置
//则将子表中的最小项与arr[pass]交换
if(smallIndex!=pass)
{
temp=arr[pass];
arr[pass]=arr[smallIndex];
arr[smallIndex]=temp;
}
}
}
自己对照下吧。
还有种是双端排序,是选择排序的变种。就是每次遍历找最大和最小两个数,分别放在新数组的两端,顾名思义就是双端排序了。
可能是你的循环找最大数的方法有问题,所以你找到的始终都是第一个数组里面最大的那个数。我给你提供一种思路;
第一种方法,你可以直接把第二个数组复制第一个数组,然后排序下,也可以。
第二种方法,先用一次循环找出最大值,放进第二个数组,然后用第一个数组所有数字与这个最大值相减,差最小且为正数的为第二大,放进去第二个数组的第二个位置,然后再用原先数组的所有项与这个第二大相减,差最小且为正数的为第三大,以此类推。就可以了
我暂时保留我的看法!
经典的冒泡法只要1个数组就可以排序了
main()
{
int a[20];
int q=0,i,j,x;
for(i=0;i<20;i++)
{
scanf("%d",&a[i]);
}
for( i=0;i<10;i++)
{
for( j=0;j<10;j++)
{
int temp=0;
if(a[i]>a[j])
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
break;
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
伊蔓美容美体spa养生馆地址好找么,我有些事
从昆明学院到小板乘哪路公交
常跟地与责任山怎么区分
区块链技术是什么?有哪家混合区块链免费培训
我为什么搜索不到三级生活片子
听说LED穿透性不强,照不远,是这样的吗
割袍断情是什么意思
预应力钢绞线为什么要使用连接器
储水式热水器有扁筒和圆筒有什么区别
双天刀 悲苦刀到底用哪个
8月移动活动,上海移动8位寻宝指令是什么?
发国际快递到美国需要几天?
防锈纸的特征/优点
杭州义鑫好不好
nvidia Geforce GT610显卡是几G的 位宽是多少
推荐资讯
excel右边列如果有内容左边列显示固定字符
CF在安装时出现文件损坏,不想重装系统。该怎
新安县外国语让不让转学
日漫K中打斗时的BGM有哪些
我买的是二手排屋二百六十万需要多少钱的契税
北京同盟益智园怎么去啊,有事要去办理
如果是4×4的方格图案,有多少个正方形呢?如
请问HDPE、LDPEP这两种再生塑料颗粒是什么意
飞机代码是按照什么规定的
F14那么好的舰载机为什么要那么早退役?不要
今天 11月03日有哪些股票利好消息
请编程高手帮忙编个股票指标公式 。要求:求
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?