本题要求从键盘读入n个整数,对这些数做选择排序。输出选择排序每一步的结果和最终结果。 输入格式: 输入的第一行是一个正整数n,表示 在第二行中会有n个整数。 输出格式: 输出选择排序每一步的结果和最终结果。c语言
时间: 2024-12-17 17:51:08 浏览: 23
在C语言中,你可以使用选择排序算法来解决这个问题。选择排序是一种简单直观的排序算法,它的工作原理是每一次从未排序的元素中找到最小(或最大)的一个,然后放到已排序序列的末尾。以下是步骤:
```c
#include <stdio.h>
// 交换两个整数
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
// 选择排序函数
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
// 找到未排序部分的最小元素
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 将找到的最小元素与当前位置交换
swap(&arr[i], &arr[minIndex]);
// 输出当前步的结果
printf("Step %d: ", i + 1);
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
// 最终排序后的数组
printf("Final result: ");
for (int k = 0; k < n; k++) {
printf("%d ", arr[k]);
}
printf("\n");
}
int main() {
int n;
scanf("%d", &n); // 读取输入的整数个数
// 读取并存储n个整数
int arr[n];
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 开始选择排序并打印过程
selectionSort(arr, n);
return 0;
}
```
在这个程序中,`selectionSort` 函数负责实现选择排序,并在每次内层循环结束后打印出当前的排序状态。当整个数组排序完成后,会输出最终结果。
阅读全文