选料法排序,接受排序

图片 2

选料法排序,接受排序

从小到大的选用排序 是从三个数组中相继选出 最小数值 输出,第二小的数值输出,第三小的数值输出…
…直到最后叁个数组中最后二个数遍历达成,则 整个排序输出达成。

 

选择法排序指每一次选拔所要排序的数组中的最大值(由小到大排序则选拔最小值卡塔尔国的数组成分,将这一个数组成分的值与最前面未有进展排序的数组成分的值调换。以数字9、6、15、4、2为例,选拔选拔法得以完结数字按从小到大進展排序,每一次沟通的依次如图8.17所示。

 图片 1

图8.17 
选拔法排序暗暗提示图

从图8.17能够开掘,在率先次排序进度上将第三个数字和纤维的数字进行了职责交流;而第三回排序进度中,将第贰个数字和剩余的数字中幽微的数字实行了职责交流;就那样推算,每趟都将下三个数字和剩余的数字中细小的数字举行岗位交流,直到将风流浪漫组数字按从小到大排序。

上边通超过实际例来看一下怎么着通进度序行使接纳法落到实处数组成分从小到大的排序。 

 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的要素卡塔 尔(英语:State of Qatar)设置为眼下的最小值卡塔 尔(阿拉伯语:قطر‎;在第二层循环中,循环比较该因素之后的相继数组元素,并将每一次相比结实中非常的小的数设置为最小值,在其次层循环结束时,将最小值与起头时设置为最小值的数组成分进行交流。当有着循环都做到之后,就将数组元素根据从小到大的依次重新排列了。

(3卡塔 尔(阿拉伯语:قطر‎循环输出数组中的成分,并在出口5个因素之后进行换行,在下生龙活虎行输出前面包车型地铁5个元素。

 

本文章摘要自几近期科技(science and technology)出版的《零基本功学C语言》,转载请申明出处!!!

  

admin

网站地图xml地图