C语言排序之选择法



                        排序之选择法

                                                                                                                           /

         同样的弄两层循环,用一个符号k记录比较数的下标,刚开始是0,也就是数组第一个元素,用循环选出i之后的数的最大值,最大值下标用k表示,满足i不等于k,然后与a[i],交换。

代码:

#include<stdio.h>

int main()

{

       int a[100], i, n, j, temp, max, k;//n为需要排序的数的数量

       scanf("%d",&n);

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

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

       for(i=0;i<n-1;i++)

       {

              k = i;//k为每次比较的第一个数, 就是左边的

              for(j=i+1;j<n;j++)

              {

                     if(a[j] > a[k])

                     k = j;//找出最大的a[j] k把下标记录下来

              }

              if(k!=i)//此时的a[k] 就是这一轮最大的与比较数交换 且不是比较数

              {

              temp = a[k];

              a[k] = a[i];

              a[i] = temp;

              }

       }

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

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

}

 

posted @ 2016-01-26 13:19  云胡同学  阅读(849)  评论(0编辑  收藏  举报