来自 电脑系统 2019-12-07 00:16 的文章
当前位置: 金沙澳门官网网址 > 电脑系统 > 正文

选用法排序,选拔排序

从小到大的选拔排序 是从三个数组中逐生龙活虎选出 最小数值 输出,第二小的数值输出,第三小的数值输出... ...直到最终多少个数组中最后多个数遍历实现,则 整个排序输出达成。

 

选料法排序指每回接收所要排序的数组中的最大值(由小到大排序则选用最小值)的数组成分,将以此数组成分的值与最前面未有开展排序的数组成分的值调换。以数字9、6、15、4、2为例,采纳接纳法落实数字按从小到大進展排序,每一次调换的次第如图8.17所示。

 图片 1

图8.17  选用法排序暗意图

从图8.17能够发掘,在第壹回排序进程上将第1个数字和纤维的数字实行了岗位调换;而第三遍排序进程中,将第叁个数字和剩下的数字中微小的数字进行了地点沟通;由此及彼,每一遍都将下二个数字和多余的数字中型迷你小的的数字实行岗位交流,直到将后生可畏组数字按从小到大排序。

上面通超过实际例来看一下哪些通进度序行使选拔法得以完结数组元素从小到大的排序。 

 int[] sort = new int[13] { 1, 4, 89, 34, 56, 40, 59, 60, 39, 1, 40, 90, 48 };  // 输入一个数组
            for (int i = 0; i < sort.Length; i++)
            {
                int min = sort[i];  // 初始化(以第i个数为初始值)最小值
                for (int j = i+1; j < sort.Length; j++)   // 从第i+1个开始遍历数组,与第i个数对比,找到最小值
                {
                    if (sort[j] < min)
                    {
                        int temp = sort[j];
                        sort[j] = min;
                        min = temp;
                    }     // 找到最小值赋值给min
                }
                Console.Write(min + " ");  // 输出min 值
            }
实例 利用选拔排序将学子成绩举办排序

在本实例中,评释了贰个整型数组和八个整型变量,个中整型数组用于存储客商输入的数字,而整型变量用于存款和储蓄数值最小的数组成分的数值和该因素的职位,然后通过双层循环举办选择法排序,最后将排好序的数组进行输出。具体代码如下:

01   #include<stdio.h>/*包含头文件*/

02  int main()                   /*主函数main*/

03  {

04           int i,j;                             /*定义变量*/

05           int a[10];

06           int iTemp;

07           int iPos;

08           printf("为数组元素赋值:n");

09           /*从键盘为数组元素赋值(成绩)*/

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

11           {

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

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

14           }

15           /*从高到低排序*/

16           for(i=0;i<9;i++)                                 /*设置外层循环为下标0~8的元素*/

17           {

18                  iTemp = a[i];                       /*设置当前元素为最大值*/

19                  iPos = i;                              /*记录元素位置*/

20                  for(j=i+1;j<10;j++)                     /*内层循环i+1到9*/

21                  {

22                         if(a[j]>iTemp)                      /*如果当前元素比最高值还高*/

23                         {

24                                iTemp = a[j];          /*重新设置最高值*/

25                                iPos = j;                /*记录元素位置*/

26                         }

27                  }

28                  /*交换两个元素值*/

29                  a[iPos] = a[i];

30                  a[i] = iTemp;

31           }

32   

33           /*输出数组*/

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

35           {

36                  printf("%dt",a[i]);                /*输出制表位*/

37                  if(i == 4)                             /*如果是第5个元素*/

38                         printf("n");            /*输出换行*/

39           }

40   

41           return 0;                                     /*程序结束*/

42  }

 

运维程序,展现结果如图8.18所示。

 图片 2

图8.18  采纳排序运行图

从该实例代码和周转结果能够见到:

(1)声澳优个整型数组a,并透过键盘为数组成分赋值。

(2)设置三个嵌套循环,第意气风发层循环为前9个数组成分,并在历次循环时将对应当前次数的数组成分设置为最小值(假如当前是第3次巡回,那么将数组中第2个因素(也正是下标为2的因素)设置为当下的最小值);在其次层循环中,循环比较该因素之后的次第数组成分,并将每一遍比较结实中相当小的数设置为最小值,在第二层循环甘休时,将最小值与先导时设置为最小值的数组成分实行交换。当有着循环都成功之后,就将数组成分根据从小到大的各样重新排列了。

(3)循环输出数组中的成分,并在出口5个因素之后实行换行,在下豆蔻梢头行输出后边的5个要素。

 

本文章摘要自明日科技(science and technology卡塔尔(英语:State of Qatar)出版的《零根基学C语言》,转发请评释出处!!!

本文由金沙澳门官网网址发布于电脑系统,转载请注明出处:选用法排序,选拔排序

关键词: