题目描述
用选择法对10个整数从小到大排序。
输入格式
输入10个无序的数字
输出格式
排序好的10个整数
样例输入
4 85 3 234 45 345 345 122 30 12
样例输出
3 4 12 30 45 85 122 234 345 345
代码分析
1. 引入头文件
代码首先引入了stdio.h
头文件,这是C语言标准输入输出库,用于处理输入输出函数。
2. 主函数定义
main
函数是程序的入口点,它没有接收任何参数,也没有返回值。
3. 定义数组和变量
在main
函数内部,定义了以下变量:
int number[10];
:一个整型数组,用于存储用户输入的10个整数。int exchange;
:一个整型变量,用于在排序过程中交换元素。int flag;
:一个整型变量,用作标记找到的最小元素的索引。
4. 输入循环
使用一个for
循环来读取用户输入的10个整数:
scanf("%d", &number[i]);
:使用scanf
函数读取一个整数,并将其存储在number[i]
中。
5. 选择排序逻辑
使用嵌套的for
循环来实现选择排序:
- 外层
for
循环变量i
从0到9,代表每轮选择排序中已经排序好的元素的索引。 - 内层
for
循环变量j
从i + 1
到9,用于查找未排序部分的最小元素。
在内层循环中:
- 通过比较
number[flag]
和number[j]
找到未排序部分的最小元素的索引,并将其存储在flag
中。
6. 交换元素
如果找到的最小元素的索引flag
不等于当前的索引i
,则将number[i]
与number[flag]
交换。
7. 输出排序结果
使用一个for
循环遍历排序后的数组,并使用printf
函数输出每个元素,每个元素后面跟一个换行符。
8. 程序结束
main
函数返回0,表示程序正常结束。
源代码
#include <stdio.h>int main(void)
{int number[10];int exchange; //交换int flag; //标记for (int i = 0; i < 10; i++)scanf("%d", &number[i]);for (int i = 0; i < 10; i++){flag = i;for (int j = i + 1; j < 10; j++){if (number[flag] >= number[j]){flag = j;}}if (flag != i){exchange = number[i];number[i] = number[flag];number[flag] = exchange;}}for (int i = 0; i < 10; i++){printf("%d\n", number[i]);}return 0;
}