C语言:输入一个小于100的正整数n,然后输入n个整数存入一维数组中,对这n个数进行由大到小的排序?

输入一个小于100的正整数n,然后输入n个整数存入一维数组中,对这n个数进行由大到小的排序,最后输出排序后的这n个数,每个数占6列。例如输入567192则应输出97621... 输入一个小于100的正整数n,然后输入n个整数存入一维数组中,对这n个数进行由大到小的排序,最后输出排序后的这n个数,每个数占6列。例如输入
5
6 7 1 9 2
则应输出

9 7 6 2 1
展开
 我来答
听不清啊
高粉答主

2020-04-27 · 说的都是干货,快来关注
知道顶级答主
回答量:7.8万
采纳率:89%
帮助的人:1.7亿
展开全部

这个程序的写法是比较标准而简单的,先输入一个整数n,然后使用一个循环输入n个整数到一维数组当中,在使用一个简单的排序方法,比方说冒泡排序就可以对数组进行从大到小的排序,最后输出就可以了.

#include <stdio.h>

void bubble_sort(int a[], int n)

{ int i, j, t;

  for (i = 0; i < n - 1; i++)

    for (j = 0; j < n - 1 - i; j++)

      if(a[j] < a[j + 1])

      { t=a[j];

        a[j]=a[j+1];

        a[j+1]=t;

      }

}

int main()

{ int a[100],i,n;

  scanf("%d",&n);

  for(i=0;i<n;i++)

    scanf("%d",&a[i]);

  bubble_sort(a, n);

  for (i = 0; i < n; i++)

    printf("%d ", a[i]);

  printf("\n");

}

么诶节奏
2020-04-27 · TA获得超过622个赞
知道小有建树答主
回答量:769
采纳率:100%
帮助的人:44万
展开全部
#include <stdio.h>
#include <stdlib.h>

#define NUM 10
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//冒泡排序算法
//基本思想:比较相邻的两个数,如果前者比后者大,则进行交换。每一轮排序结束,选出一个未排序中最大的数放到数组后面。
void bubbleSort(int *arr, int n) {
int i,j;
for (i = 0; i<n - 1; i++)
for (j = 0; j < n - i - 1; j++) {
//如果前面的数比后面大,进行交换
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
//最差时间复杂度为O(n^2),平均时间复杂度为O(n^2)。稳定性:稳定。辅助空间O(1)。
//升级版冒泡排序法:通过从低到高选出最大的数放到后面,再从高到低选出最小的数放到前面,
//如此反复,直到左边界和右边界重合。当数组中有已排序好的数时,这种排序比传统冒泡排序性能稍好。
//升级版冒泡排序算法
void bubbleSort_1(int *arr, int n) {
//设置数组左右边界
int left = 0, right = n - 1;
//当左右边界未重合时,进行排序
while (left<=right) {
int i,j;
//从左到右遍历选出最大的数放到数组右边
for (i =left; i < right; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
right--;
//从右到左遍历选出最小的数放到数组左边
for (j = right; j> left; j--) {
if (arr[j + 1] < arr[j]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
left++;
}
}
int main(int argc, char *argv[]) {
int arr[NUM],i,j,temp;
printf("请输入10个数:\n");
for(i=0; i<NUM; i++) {
printf("请输入第(%d)个数:",i+1);
scanf("%d",&arr[i]);
}
printf("\n输入如下排列:\n");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}/*
for(i=0; i<NUM; i++) {
for(j=i+1; j<NUM; j++) {
if(arr[i]>arr[j]) {
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}*/
bubbleSort_1(arr,NUM);
/*printf("\n从小到大如下排列:\n");
for(i=0; i<NUM; i++) {
printf("%4d",arr[i]);
}*/
printf("\n从大到小如下排列:\n");
for(i=NUM-1; i>=0; i--) {
printf("%4d",arr[i]);
}
return 0;
}
自己把数字改改就行了
更多追问追答
追问
能换种方法吗,这种我还没学到😓
追答
冒泡排序都没学到?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式