c语言用选择法对10个整数排序,10个整数用scanf函数
时间: 2024-10-24 20:05:09 浏览: 36
在C语言中,如果你想使用选择排序算法对10个整数进行排序,可以按照以下步骤操作:
1. 首先,你需要包含头文件`stdio.h`以便使用`scanf`函数输入数据,以及`stdlib.h`中的`qsort`函数(虽然选择排序不需要这个,但我们通常会在教学示例中一起展示,因为它是标准库提供的通用排序函数)。
```c
#include <stdio.h>
#include <stdlib.h>
```
2. 定义一个结构体存储整数和它的索引,因为在选择排序过程中需要同时考虑数值和位置信息:
```c
typedef struct {
int value;
int index;
} IntWithIndex;
```
3. 定义选择排序的比较函数,用于`qsort`:
```c
int compare(const void *a, const void *b) {
const IntWithIndex *ia = (const IntWithIndex *) a;
const IntWithIndex *ib = (const IntWithIndex *) b;
return ia->value - ib->value;
}
```
4. 主程序部分,读取10个整数并进行排序:
```c
void selection_sort(IntWithIndex numbers[], int size) {
for (size_t i = 0; i < size - 1; ++i) {
int min_index = i;
for (size_t j = i + 1; j < size; ++j) {
if (numbers[j].value < numbers[min_index].value)
min_index = j;
}
// 交换最小值到当前位置
IntWithIndex temp = numbers[i];
numbers[i] = numbers[min_index];
numbers[min_index] = temp;
}
}
int main() {
IntWithIndex numbers[10];
for (int i = 0; i < 10; ++i) {
scanf("%d", &numbers[i].value);
numbers[i].index = i; // 添加索引
}
// 使用qsort排序
qsort(numbers, 10, sizeof(IntWithIndex), compare);
// 打印排序后的数组
for (int i = 0; i < 10; ++i) {
printf("元素 %d 的值: %d\n", numbers[i].index, numbers[i].value);
}
return 0;
}
```
阅读全文