A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 行我福 中级黑马   /  2015-1-24 22:53  /  940 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      选择排序,同样是一种较为简单的和容易实现的排序方法,下面介绍这种方法排序的实现。首先确定排序规则,然后给定数组的第一个数为基准,将其后的数依次与其比较,根据排序规则来确定是否交换两个数。
以下以升序为例。
      思路分析~
     第一轮:以第一个数位基准,从第二个数开始,将后面的数据与第一个数一一比较,若有比第一个数还小的,则将与之交换,直到比较到最后一个数为止。
    第二轮:由于第一轮比较结束后,第一个数是给定排序中最小的数,因此第二轮以第二个数为基准,将其后数依次与其比较,满足条件则交换,直到比较到最后一个数为止。
    重复以上操作,直到倒数第二个数为基准,进行最后一轮比较操作结束。
   以下是实现代码:
  
  1. #include <stdio.h>
  2. void sort(int a[],int n)
  3. {
  4.          int i,j,k,tmp;
  5.          for(i=0;i<n-1;i++)
  6.          {
  7.                  k=i;
  8.                  for(j=i+1;j<n;j++)
  9.                  {
  10.                          if(a[j]<a[k])
  11.                                  k=j;
  12.                  }
  13.                  if(k!=i)
  14.                  {
  15.                          tmp=a[i];
  16.                          a[i]=a[k];
  17.                          a[k]=tmp;
  18.                  }
  19.          }
  20. }

  21. int main()
  22. {
  23.          int i;
  24.          int a[5]={32,12,56,78,43};
  25.          printf("Before Sort\n");
  26.          for(i=0;i<5;i++)
  27.          {
  28.                  printf("%d\t",a[i]);
  29.          }
  30.          sort(a,5);
  31.          printf("\nAfter Sort\n");
  32.           for(i=0;i<5;i++)
  33.          {
  34.                  printf("%d\t",a[i]);
  35.          }
  36.          return 0;
  37. }
复制代码
原运行的结果:




评分

参与人数 1黑马币 +3 收起 理由
张文文 + 3

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马