C语言排序之选择法

来源:互联网 发布:艺术生那么漂亮知乎 编辑:程序博客网 时间:2024/05/17 04:26


                       排序之选择法

                                                                                                                          /

        同样的弄两层循环,用一个符号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]);  

}

 

1 0
原创粉丝点击