用C语言编译一下输入一批未排序的数据,数量不超过30个,请使用选择法或者冒泡法对其排序,并按照规定的要求输出。 输入格式: 先输入待排序的整形数的个数;然后输入所有的待排序的数据。 输出格式: 在一行中按照由大到小的顺序输出排序好的数据。注意:最后一个数据后面没有空格。 输入样例: 在这里给出一组输入。例如: 5 -2 52 0 192 35 输出样例: 在这里给出相应的输出。例如: 192 52 35 0 -2
时间: 2023-07-15 09:14:50 浏览: 170
下面是使用选择法对输入数据进行排序的 C 代码实现。
```
#include <stdio.h>
void selection_sort(int arr[], int len)
{
int i, j, max, tmp;
for (i = 0; i < len - 1; i++) {
max = i;
for (j = i + 1; j < len; j++) {
if (arr[j] > arr[max]) {
max = j;
}
}
if (max != i) {
tmp = arr[i];
arr[i] = arr[max];
arr[max] = tmp;
}
}
}
int main()
{
int n, i;
int arr[30];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
selection_sort(arr, n);
for (i = 0; i < n - 1; i++) {
printf("%d ", arr[i]);
}
printf("%d\n", arr[n - 1]);
return 0;
}
```
下面是使用冒泡法对输入数据进行排序的 C 代码实现。
```
#include <stdio.h>
void bubble_sort(int arr[], int len)
{
int i, j, tmp;
for (i = 0; i < len - 1; i++) {
for (j = 0; j < len - i - 1; j++) {
if (arr[j] < arr[j + 1]) {
tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
}
int main()
{
int n, i;
int arr[30];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
bubble_sort(arr, n);
for (i = 0; i < n - 1; i++) {
printf("%d ", arr[i]);
}
printf("%d\n", arr[n - 1]);
return 0;
}
```
这两种算法的时间复杂度都是 O(n^2),但是选择法的交换次数比冒泡法少,所以实际应用中选择法更常用。
阅读全文