C语言数组,输入20个数,从大到小排序
时间: 2024-03-27 16:16:35 浏览: 35
可以使用冒泡排序或选择排序来实现从大到小排序。
下面是使用冒泡排序的示例代码:
```c
#include <stdio.h>
int main() {
int arr[20];
int i, j, temp;
// 输入20个数
printf("请输入20个整数:\n");
for (i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
}
// 冒泡排序
for (i = 0; i < 19; i++) {
for (j = 0; j < 19 - i; j++) {
if (arr[j] < arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
// 输出排序结果
printf("从大到小排序后的结果为:\n");
for (i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
使用选择排序的示例代码如下:
```c
#include <stdio.h>
int main() {
int arr[20];
int i, j, temp, max_index;
// 输入20个数
printf("请输入20个整数:\n");
for (i = 0; i < 20; i++) {
scanf("%d", &arr[i]);
}
// 选择排序
for (i = 0; i < 19; i++) {
max_index = i;
for (j = i+1; j < 20; j++) {
if (arr[j] > arr[max_index]) {
max_index = j;
}
}
if (max_index != i) {
temp = arr[i];
arr[i] = arr[max_index];
arr[max_index] = temp;
}
}
// 输出排序结果
printf("从大到小排序后的结果为:\n");
for (i = 0; i < 20; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
以上两种方法都可以实现从大到小排序,其中冒泡排序的时间复杂度为O(n^2),选择排序的时间复杂度也为O(n^2)。如果需要更高效的排序算法,可以考虑使用快速排序、归并排序等。