谭浩强C程序设计习题6-2思考

Posted teamcolt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谭浩强C程序设计习题6-2思考相关的知识,希望对你有一定的参考价值。

  题目:用选择法对10个整数排序。

  选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完(选自百度百科)。这个概念都有点迷糊,要是这样子排序的话,岂不是要比较 n! 次?而且是不是需要一个额外的空间来存放比较后的序列?而且都比较了一次为啥不用冒泡算法好点。这里我还是直接用冒泡算法做吧,然后看看参考答案,比较一下优劣。

 1 #include<stdio.h>
 2 #define N 10
 3 
 4 /*冒泡算法实现*/
 5 int main()
 6 {
 7     int num[N];
 8     int i, j, temp;
 9     printf("Please enter 10 numbers:");
10     /*读入十个数*/
11     for (int k = 0; k < N; k++)
12     {
13         scanf("%d", &num[k]);
14     }
15 
16     for(i = 0; i<N-1; i++)
17         for (j = i + 1; j < N; j++)                                     //按从小到大排列
18         {
19             if (num[i] > num[j])                                  
20             {
21                 temp = num[i];
22                 num[i] = num[j];
23                 num[j] = temp;
24             }
25         }
26     /*输出排序后的数组*/
27     for (int k = 0; k < N; k++)
28     {
29         printf("%d ", num[k]);
30     }
31     return 0;
32 }

  看了一下学习辅导,怎么感觉也是冒泡啊?

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i, j, min, temp, a[11];
 5     printf("enter data:
");
 6     for (i = 1; i <= 10; i++)
 7     {
 8         printf("a[%d] = ",i);
 9         scanf("%d", &a[i]);             //输入十个数
10     }
11     printf("
");
12     printf("The orginal numbers:
");
13     for (i = 1; i <= 10; i++)
14         printf("%5d", a[i]);            //输出这十个数
15     printf("
");
16     for (i = 1; i <= 9; i++)            //以下8行是对10个数排序
17     {
18         min = i;
19         for (j = i + 1; j <= 10; j++)
20             if (a[min] > a[j]) min = j;
21         temp = a[i];                    //以下3行将a[i+1]~a[10]中的最小值与a[i]对换
22         a[i] = a[min];
23         a[min] = temp;
24     }
25     printf("
The sorted numbers:
");  //输出已排序好的10个数
26     for (i = 1; i <= 10; i++)
27         printf("%5d", a[i]);
28     printf("
");
29     return 0;
30 }

  核心代码应该就是冒泡吧,之只是用min代替了j而已。

以上是关于谭浩强C程序设计习题6-2思考的主要内容,如果未能解决你的问题,请参考以下文章

谭浩强C程序设计习题6-5思考

谭浩强C程序设计习题6-3思考

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社

谭浩强版C语言程序设计(第三版)课后习题完整答案附源码--高等教育出版社

请问谁有c语言程序设计(第二版)课后习题答案,谭浩强的

谭浩强版本C语言课后习题第四章