求解:C程序代码是读入10个数,并对这10个数进行从大到小排序,其排序方法是:用第1个数与后9个数进行比较,选出最大的数排在第1位;然后用第2个数与后8个数进行比较,选择出最大的数排在第2位,依次类推,直到完成顺序
请帮助作出解答代码,如果能写出排序的方法和思路更好,十分感谢
求C/C++高手,解答C语言排序题目,高分送
答案:6 悬赏:70
解决时间 2021-02-19 21:42
- 提问者网友:傲气稳全场
- 2021-02-19 03:53
最佳答案
- 二级知识专家网友:放肆的依賴
- 2021-02-19 05:09
#include<stdio.h>
#define N 10
void main()
{ int a[N],i,j,k;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N-1;i++ ) //从第1个数到倒数第2个数,存放之后最大的数
for ( j=i+1;j<N;j++ ) //每次i循环计算从第i个数开始直到最后一个数
if ( a[i]<a[j] ) { k=a[i]; a[i]=a[j]; a[j]=k; } //用每次循环的第1个数与之后的所有数比较
//如果发现有比第1个数大的就交换一下
//这样j循环之后第i个数必然是之后最大的一个了
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}
#define N 10
void main()
{ int a[N],i,j,k;
for ( i=0;i<N;i++ ) scanf("%d",&a[i]);
for ( i=0;i<N-1;i++ ) //从第1个数到倒数第2个数,存放之后最大的数
for ( j=i+1;j<N;j++ ) //每次i循环计算从第i个数开始直到最后一个数
if ( a[i]<a[j] ) { k=a[i]; a[i]=a[j]; a[j]=k; } //用每次循环的第1个数与之后的所有数比较
//如果发现有比第1个数大的就交换一下
//这样j循环之后第i个数必然是之后最大的一个了
for ( i=0;i<N;i++ ) printf("%d ",a[i]); printf("\n");
}
全部回答
- 1楼网友:ー何必说爱
- 2021-02-19 11:40
#include <stdio.h>
void main()
{
int i, j, temp;
int a[10];
for (i = 0; i<10; i++)
scanf("%d,", &a[i]);
for (j = 0; j < 9; j++)
{
for (i = 0; i<9 - j; i++)
if (a[i]<a[i + 1])
{
temp = a[i];
a[i] = a[i + 1];
a[i + 1] = temp;
}
}
for (i = 0; i<10; i++)
printf("%5d,", a[i]);
printf("\n");
}
冒泡排序算法的运作如下:(从后往前)
1比较相邻的元素。如果第一个比第二个小,就交换他们两个。
2对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素 应该会是最大的数。
3针对所有的元素重复以上的步骤,除了最后一个。
4持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
- 2楼网友:转身后的回眸
- 2021-02-19 10:11
采用选择排序算法:
#include <stdio.h>
#define N 10
int main()
{
int a[N];
printf("请输入10个数:\n");
for(int i=0;i<N;i++)
{
scanf("%d",&a[i]);
}
int i, j, d;
int temp;
for(i = 0; i < N - 1; ++i)
{
d = i; //开始一趟排序,假定第i个元素是后面n - i + 1个未排序的元素中最大的元素
for(j = i + 1; j < N; ++j)
if(a[j] > a[d]) //如果发现比当前最大元素还大的元素,则更新记录最大元素的下标d
d = j;
if(d != i) //如果最大元素的下标不是后面n - i + 1的未排序序列的第一个元素,则需要交换第i个元素和后面找到的最大元素的位置
{
temp = a[d];
a[d] = a[i];
a[i] = temp;
}
}
printf("从大到小排序后的结果:\n");
for(int i = 0; i < N; ++i)
{
printf("%d ", a[i]);
}
printf("\n");
}
- 3楼网友:旧事诱惑
- 2021-02-19 08:36
#include <stdio.h>
int main() {
int a[10],i,j,t,n = 10;
printf("输入10个数:");
for(i = 0;i < n;i++) scanf("%d",&a[i]);
for(i = 0;i < n - 1;i++) {
for(j = i + 1;j < n;j++) {
if(a[j] > a[i]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i = 0;i < n;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
- 4楼网友:蜜罐小熊
- 2021-02-19 07:20
#include<iostream>
using namespace std;
void main()
{
int a[10],i,j,t;
cout<<"输入10个数:";
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<10;i++)
{
for(j=i;j<10;j++)
if(a[j]>a[i])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
for(i=0;i<10;i++)
cout<<a[i] << " ";
}这是典型的冒泡排序算法。百度“冒泡排序”,方法、思路、代码一大堆,不赘述了。
- 5楼网友:夢想黑洞
- 2021-02-19 06:36
//今天没有时间了,过几天吧
typedef struct computer{
info *next;
int do;//有人正在用为1,有人将要用为2,空机为0
}computer, c[20];
typedef struct info{
long date;//什么时间,格式如200807131850
int num;//几个时间段
info *next;//接一下
long tel;//电话
};
void init(computer c[],int n)
{//初始化
int i;
for(i=0;i=(date+num*2*100))
||qt.next==null)
{
q=(info*)malloc(sizeof(info));
*q.date=date;
*q.num=num;
*q.tel=tel;
q.next=c[i].next;
c[i].next=q.next;
c[i].do=2;
return i;
}
return (-1);
}
}
}
int del(int i,long date, int num)
{
info *qt,*q;
for(qt=c[i].next;*qt!=null;qt=qt.next)
{
if(*qt.date==date&&qt.num==num)
{
qt.next=qt.next.next;
free(qt);
if(c[i].next==null)c[i].do=0;
return ok;
}
}
}
void currnt(computer c[])
{
for(i=0;i=date)
c[i].do=1;
}
}
void input(char inster){
info in;
if(inster=='i' || inster=='i'){
printf("输入你的要上的时间(格式如200807151630),时间段(如:2),电话如:02088888888\n");
scanf("%l%d%d".in.date,in.num,in.tel);
i=search(in.date, in.num,in.tel , n, c);
if(i<0){printf("对不起,现在没有符合你要求的机子\n");}
else printf("你的机子是%d\n",i);
}
#include
#define ture 1
#define ok 1
main()
{//还有一个什么等待的是什么,我不明白
int n;
info in;
long seelp;
seelp=0;
n=20;//20台机
init( c, n);
printf("1. 想预约吗?是(i or i);\n");
printf("2. 你想取消预约吗?是(d or d);\n");
while(ture){
c=getchar();
switch(c){
case 'i':
case 'i':
input(c);
break;
case 'd':
case 'd':
printf("输入你的要上的时间(格式如200807151630),时间段(如:2),电话如:02088888888\n");
scanf("%l%d%d".in.date,in.num,in.tel);
del(in);
break;
}
if(seelp++==1000000000)
{//先睡睡
currnt( c);
seelp=0;
}
}
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯