描述: 简单选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 现在需要得到序列第i趟排序后的结果(本题中采用每轮选取选出最小值的方式)。比如给定趟数 3 和序列 (45 88 48 40 21 73) 。根据选择排序的算法: 第一趟:21 88 48 40 45 73 第二趟:21 40 48 88 45 73 第三趟:21 40 45 88 48 73 由此可以得到第三趟的输出为 (21 40 45 88 48 73)。 输入描述: 输入包含多组,每组由两行组成: 第一行为正整数i,代表需要做的简单排序的趟数; 第二行为正整数序列,包含用空格隔开的多个值(i<=序列长度,序列长度最大为100)。 输出描述: 输出经过第i趟排序后的正整数序列(用空格分隔元素)。
时间: 2024-04-16 07:30:10 浏览: 95
简单选择排序
你可以使用以下的 C 代码来实现根据给定的趟数对正整数序列进行简单选择排序,并输出第i趟排序后的序列:
```c
#include <stdio.h>
// 简单选择排序
void selectionSort(int array[], int n, int i) {
for (int j = 0; j < i; j++) {
int minIndex = j;
for (int k = j + 1; k < n; k++) {
if (array[k] < array[minIndex]) {
minIndex = k;
}
}
// 交换最小值和当前位置的元素
int temp = array[j];
array[j] = array[minIndex];
array[minIndex] = temp;
}
}
int main() {
int i; // 需要做的简单排序的趟数
int n; // 序列的长度
int array[100]; // 序列
while (scanf("%d", &i) == 1) {
getchar(); // 读取换行符
char c;
int count = 0; // 序列中元素的个数
// 读取序列
while ((c = getchar()) != '\n') {
if (c != ' ') {
ungetc(c, stdin);
scanf("%d", &array[count]);
count++;
}
}
n = count;
selectionSort(array, n, i); // 简单选择排序
// 输出经过第i趟排序后的序列
for (int j = 0; j < n; j++) {
printf("%d ", array[j]);
}
printf("\n");
}
return 0;
}
```
程序会循环读取多组输入,每组输入包含两行。第一行为正整数i,代表需要做的简单排序的趟数;第二行为正整数序列,包含用空格隔开的多个值(i<=序列长度,序列长度最大为100)。程序将根据给定的趟数使用简单选择排序算法对序列进行排序,并输出第i趟排序后的序列。输出的正整数之间使用空格分隔。
阅读全文