本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
从各个大佬地方copy来的,试过都能运行
新手建议看第一个
#include<stdio.h>
int main()
{
int n, i, j, t;
int a[11];
scanf("%d", &n);
for(i = 0;i < n;i++)
scanf("%d",&a[i]);
for(i = 1;i < n;i++)
{
for(j = 0;j < n - i;j++)
{
if(a[j] < a[j + 1])
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
for(i = 0;i < n;i++)
{
if(i < n - 1)
printf("%d ", a[i]);
else
printf("%d\n", a[n - 1]);
}
return 0;
}
#include <stdio.h>
#include <string.h>
int main()
{
int a[10];
int n,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
int temp;
int index;
for(i=0;i<n;i++)
{
index=i;
for(j=i+1;j<n;j++){
if(a[j]>a[index]){
index=j;
}
}
temp=a[index];
a[index]=a[i];
a[i]=temp;
}
printf("%d",a[0]);
for(i=1;i<n;i++){
printf(" %d",a[i]);
}
return 0;
}
#include<stdio.h>
int main(void)
{
int num;
scanf("%d",&num);
int array[num];
for(int i=0;i<num;i++)
{
scanf("%d",&array[i]);
}
int temp;
int j;
for(int i=1;i<num;i++)
{
temp=array[i];//要搞清楚的是,temp在插入之前的数组被认为是已经排好序的了,因为刚开始时只有array[0]一个元素在里面。
for(j=i;j>0&&array[j-1]<temp;j--)//如果temp更大那么就把前面的小值挤到后面来,第一个是array[j]=temp被前一个代替,如此反复把小于temp的值一个个的前移。
{
array[j]=array[j-1];
}
array[j]=temp;//最后把temp放入空出来的位置
}
printf("%d",array[0]);
for(int i=1;i<num;i++)
{
printf(" %d",array[i]);
}
return 0;
}
#include<stdio.h>
int main(void)
{
int num;
scanf("%d",&num);
int array[num];
for(int i=0;i<num;i++)
{
scanf("%d",&array[i]);
}
int temp;
for(int i=0;i<num;i++)//从第一个起,每一个与后面的所有进行判断,这条语句中的i,就是要与后面作判断的数据的下标。
{
for(int j=i+1;j<num;j++)//这是与后面作判断的下标.i为1时,要与后面的2,3...到num-1判断。
{
if(array[i]<array[j])//把大的放前面,大的与小的交换
{
temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}
}
printf("%d",array[0]);
for(int i=1;i<num;i++)
{
printf(" %d",array[i]);
}
return 0;
}
2926

被折叠的 条评论
为什么被折叠?



