c语言输入第一行给出一个不超过20的正整数n。第二行给出n个整数,其间以空格分隔。 输出格式: 在每一行中输出排序过程中对应步骤的中间结果,即每一步后a[0]∼a[n−1]的值,每个数字后面有一个空格。
时间: 2023-06-26 21:07:12 浏览: 69
以下是基于选择排序算法的 C 语言代码,可以满足你的需求:
```c
#include <stdio.h>
void selection_sort(int arr[], int n) {
int i, j, min_idx, temp;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
temp = arr[min_idx];
arr[min_idx] = arr[i];
arr[i] = temp;
for (j = 0; j < n; j++) {
printf("%d ", arr[j]);
}
printf("\n");
}
}
int main() {
int n, i;
int arr[20];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
selection_sort(arr, n);
return 0;
}
```
接下来是代码的解释:
1. `selection_sort` 函数实现了选择排序算法,其中 `arr` 是待排序的数组,`n` 是数组的长度。
2. 算法的核心是两层循环。第一层循环从数组的第一个元素开始,一直到倒数第二个元素。第二层循环从第一层循环的下一个元素开始,一直到数组的最后一个元素。在第二层循环中,找到当前未排序部分的最小值,并将其与第一层循环的当前元素交换位置。
3. 在每次交换位置后,输出当前数组的排序结果。
4. `main` 函数读取输入,并调用 `selection_sort` 函数进行排序。
希望这个代码对你有所帮助!