------------------------------------------------------------------------------------------------------

选择排序:是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[2, 2, 0]第一次就将第一个[2]与[0]交换,导致第一个2挪动到第二个2后面)。

------------------------------------------------------------------------------------------------------

C语言代码如下:

# include <stdio.h>
# include <stdlib.h>
# include <string.h>



void sort(int a[], int x)
{
     int m, n, k, ret=0;
     for (m = 0; m < x - 1; m++)             /*嵌套循环实现一个数与剩下的数一一比较*/
     {
          k = m;
          for (n = m + 1; n < x; n++)
          {
               if (a[n]<a[k])
               {
                    k = n;
               }
          }
          ret = a[k];                        /*将最小值和第一个数交换位置*/
          a[k] = a[m];
          a[m] = ret;
     }
}



int main()
{
     int arr[10] = {3,6,13,9,2,1,18,30,20,10};
     int len = 10;
     int i;
     
     printf("排序前的数列:");
     for (i = 0; i < 10; i++)
     {
          printf("%d ", arr[i]);
     }
     printf("\n");
    
     sort(arr,len);

     printf("排序后的数列:");
     for (i = 0; i < 10; i++)
     {
          printf("%d ",arr[i]);
     }
     printf("\n");
 
     system("pause");
     return 0;
}

 

----------------------------------------------------------------------------------------

干货小知识:getchar()的返回值为int型;一般用(c=getchar()!=EOF)来判断输入是否结束,而char类型不一定能容纳EOF的值,所以用int接受返回值。C99:char一般用于存放基本执行字符集,其值为正;其他存放于char的值由现实定义。而EOF的值在<stdio.h>中定义,具体值只要与字符集不同即可,C99定义其值为一个int型负值的宏;有的将EOF定义为-1,如果你的编译器char类型为unsigned则返回值为-1时无法用char接收,如果是signed则可以接收。但是,为了提高程序的可移植性,则统一将char的返回值用int型来接收。

----------------------------------------------------------------------------------------