|
10鱼币
选择法排序:本题要求将给定的n个整数从小到大排序后输出。输出时相邻数字中间用一个空格分开,行末不得有多余空格。
#include <stdio.h>
# define MAXN 10
int main()
{
int i, index, k, n, temp;
int a[MAXN];
scanf("%d", &n);
for(i = 0; i < n; i++){
scanf("%d", &a[i]);
}
for(k = 0; k < n-1; k++){
index = 【1】 ;
for【2】{
if【3】{
index = i;
}
}
【4】
}
for(i = 0; i < n; i++) {
if【5】{
printf("%d", a[i]);
}else{
printf(" %d", a[i]);
}
}
printf("\n");
return 0;
}
麻烦讲一下,谢谢
- #include <stdio.h>
- //1.宏定义常量MAXN为10
- # define MAXN 10
- int main() {
- int i, index, k, n, temp;
- //2.创建一个数组a,容量为10
- int a[MAXN];
- //3.接收用户输入的数字赋值给变量n
- scanf_s("%d",&n);
- //4.接收用户输入的n个数依次放入数组a
- for (i = 0; i < n; i++) {
- scanf_s("%d", &a[i]);
- }
- //5.冒泡排序,外层循环为冒泡轮数,每一轮产生一个最大的数放到a的最后一个位置,轮数为n-1
- for (k = 0; k < n - 1; k++) {
- //6.指向数组中较小的数的索引
- index = k;
- //7.内层循环,两数比较,找出所有数中最小的那个
- for (i = k; i < n; i++) {
- if (a[i] < a[index]) {
- index = i;
- }
- }
-
- //8.将最小的数移动到a中最前面的位置
- temp = a[k];
- a[k] = a[index];
- a[index] = temp;
- }
- //9.数组a中的数已经排好序,遍历输出数组a,若为第一个数则前面不加空格
- for (i = 0; i < n; i++) {
- if (i == 0) {
- printf("%d", a[i]);
- }
- else {
- printf(" %d", a[i]);
- }
- }
- //10.换行
- printf("\n");
- return 0;
- }
复制代码
|
|