要求从键盘读入n个整数,对这些数做选择排序。输出选择排序每一步的结果和最终结果。 输入格式: 输入的第一行是一个正整数n,表示 在第二行中会有n个整数。 输出格式: 输出选择排序每一步的结果和最终结果。 输入样例: 在这里给出一组输入。例如: 5 3 7 2 9 1 输出样例: 在这里给出相应的输出。例如: step 1: 1 7 2 9 3 step 2: 1 2 7 9 3 step 3: 1 2 3 9 7 step 4: 1 2 3 7 9 sorted array: 1 2 3 7 9 注意: 输出的冒号 : 是英文输入法下的符号,冒号后有一个空格。每个整数后有一个空格。
时间: 2024-02-24 07:59:29 浏览: 28
hitacm1863
好的,请参考以下 C 语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
scanf("%d", &n);
int *nums = (int*) malloc(n * sizeof(int));
for (int i = 0; i < n; i++) {
scanf("%d", &nums[i]);
}
for (int i = 0; i < n; i++) {
int min_index = i;
for (int j = i+1; j < n; j++) {
if (nums[j] < nums[min_index]) {
min_index = j;
}
}
int tmp = nums[i];
nums[i] = nums[min_index];
nums[min_index] = tmp;
printf("step %d: ", i+1);
for (int k = 0; k < n; k++) {
printf("%d ", nums[k]);
}
printf("\n");
}
printf("sorted array: ");
for (int i = 0; i < n; i++) {
printf("%d ", nums[i]);
}
printf("\n");
free(nums);
return 0;
}
```
在这段代码中,我们首先读入了输入的数据,然后使用两层循环实现选择排序。在每一轮循环中,我们找出当前未排序部分中最小的数,并将其与待排序部分的第一个数交换。每次交换后,我们都打印出当前的排序结果。最后,我们再次输出排序后的结果。注意每一步输出时需要带上 `step x:` 的前缀。最终结果输出时需要带上 `sorted array:` 的前缀。注意,本代码中为了方便使用了动态内存分配,需要在程序结束时手动释放分配的内存空间。
阅读全文