首页 > 资讯 > 甄选问答 >

问 c 语言选择法排序 10 个数 编程大题详解

2026-11-05 09:09:18
最佳答案

答

c 语言选择法排序 10 个数,是期末考试上机和读程序题高频经典题,选择排序核心思想是每一轮在未排序区间里面找到最小值的下标,然后把这个最小值和本轮起始位置的元素交换,一共进行 9 轮比较,10 个元素只需要 n 减 1 轮排序,和冒泡排序相邻两两交换不一样,选择排序是先找最小下标,最后统一交换,交换次数更少,考试一般要求升序排列,输入 10 个整数,排序之后输出,重点掌握双层循环结构,还有保存最小值下标的变量,很多同学容易混淆,是保存下标而不是保存数值,这个是最常见易错点。

选择排序原理

一共有 10 个数字,存放在数组 a 里面

第一轮:从 a [0] 到 a [9] 找到最小值下标 min,把 a [min] 和 a [0] 交换,第一个位置就位

第二轮:从 a [1] 到 a [9] 找到最小值下标 min,把 a [min] 和 a [1] 交换,第二个位置就位

以此类推,直到第 9 轮,只需要比较最后两个元素

外层循环控制轮次,内层循环用来查找最小值下标

完整代码 升序 输入 10 个数

include

int main()

{

int a[10], i, j, min, temp;

printf("请输入10个整数:");

for(i = 0; i < 10; i++)

{

scanf("%d", &a[i]);

}

//选择排序

for(i = 0; i < 9; i++)

{

min = i; //默认本轮起始下标是最小值下标

for(j = i + 1; j < 10; j++)

{

if(a[j] < a[min])

{

min = j; //更新最小值下标

}

}

//交换

if(min != i)

{

temp = a[i];

a[i] = a[min];

a[min] = temp;

}

}

printf("排序后:");

for(i = 0; i < 10; i++)

{

printf("%d ", a[i]);

}

return 0;

}

代码要点说明

1 数组定义 a [10],下标从 0 到 9

2 外层循环 i 从 0 到 8,一共 9 轮

3 min 变量保存最小值下标,初始赋值 i

4 内层循环 j 从 i+1 开始,和后面所有元素比较

5 如果后面元素更小,更新 min 下标

6 本轮查找结束之后,交换 a [i] 和 a [min]

7 如果想改成降序,只需要把 if (a [j] < a [min]) 改成 if (a [j] > a [min])

和冒泡排序对比表格

排序算法核心特点交换时机
选择法排序每轮找最小值下标,一次性交换每轮最多交换一次
冒泡排序相邻元素两两比较,大的往后移动每次比较满足条件就交换

常见易错点汇总

错误类型错误描述修正方式
min 存数值错误写成保存最小值数字,不是下标min 保存的是数组下标
外层循环写成 i<10多执行一轮,多余比较10 个元素外层是 i<9
内层循环 j 从 i 开始重复比较本轮已经就位元素j 从 i+1 开始
忘记交换临时变量 temp直接赋值覆盖数据必须借助 temp 完成交换
升序降序符号写反题目要求升序却写成大于号升序用小于号

拓展补充

考试有时候会要求输出每一轮排序之后数组,也就是每一轮交换之后打印数组,只需要在外层循环交换完成之后,增加一段输出数组的代码,题型改动不大,核心双层循环逻辑不变。

【常见问题】

问题 1 c 语言选择法排序 10 个数外层循环为什么是 9 轮

回答 1 c 语言选择法排序 10 个数,n 个元素选择排序只需要 n 减 1 轮,10 个元素就是 9 轮,最后剩下一个元素天然有序,不需要继续比较,是 c 语言选择法排序 10 个数核心考点。

问题 2 c 语言选择法排序 10 个数 min 变量存的是什么

回答 1 c 语言选择法排序 10 个数里面 min 保存最小值的数组下标,不是最小值本身,这个是 c 语言选择法排序 10 个数最容易出错的地方。

问题 3 c 语言选择法排序 10 个数和冒泡排序差别是什么

回答 1 c 语言选择法排序 10 个数是每轮查找最小值下标再交换,冒泡排序是相邻元素不断比较交换,选择排序交换次数更少,是 c 语言选择法排序 10 个数常考辨析题。

问题 4 c 语言选择法排序 10 个数怎么改成降序

回答 1 c 语言选择法排序 10 个数升序判断是 a [j]a [min],其他代码不变,是 c 语言选择法排序 10 个数常见变形题。

【免责申明】

本文内容仅作为 c 语言选择法排序 10 个数备考学习参考,代码示例适配主流 gcc 环境,考试答题以本校教材写法为准,学习使用产生的相关问题由使用者自行承担。