码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-05-19 22:38:10      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:整数   def   style   输入   sort   main   怎么   程序设计   data   

  题目:用选择法对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:\n");
 6     for (i = 1; i <= 10; i++)
 7     {
 8         printf("a[%d] = ",i);
 9         scanf("%d", &a[i]);             //输入十个数
10     }
11     printf("\n");
12     printf("The orginal numbers:\n");
13     for (i = 1; i <= 10; i++)
14         printf("%5d", a[i]);            //输出这十个数
15     printf("\n");
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("\nThe sorted numbers:\n");  //输出已排序好的10个数
26     for (i = 1; i <= 10; i++)
27         printf("%5d", a[i]);
28     printf("\n");
29     return 0;
30 }

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

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

标签:整数   def   style   输入   sort   main   怎么   程序设计   data   

原文地址:https://www.cnblogs.com/teamcolt/p/12919581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!