Chinaunix首页 | 论坛 | 博客
  • 博客访问: 478774
  • 博文数量: 144
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1190
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 20:16
文章分类

全部博文(144)

文章存档

2017年(1)

2015年(5)

2014年(108)

2013年(30)

我的朋友

分类: C/C++

2013-10-20 10:54:05

基本思想:每一趟在n-i+1个记录中选取关键字最小的记录作为有序序列中第i个记录;

 点击(此处)折叠或打开

  1. #include<stdio.h>
  2. #define N 6
  3. typedef struct
  4. {
  5.     int r[N];
  6.     int length;

  7. }Sqlist;
  8. void SelectSort(Sqlist *L);
  9. void Init(Sqlist *L);
  10. void main()
  11. {
  12.     int i;
  13.     Sqlist Sqlist1;
  14.     Init(&Sqlist1);
  15.     printf("请输入%d个数,并用空格隔开:\n",N);
  16.     for(i=0;i<N;i++)
  17.     {
  18.         scanf("%d",&Sqlist1.r[i]);
  19.         Sqlist1.length++;
  20.     }
  21.     printf("排序前:\n");
  22.     for(i=0;i<Sqlist1.length;i++)
  23.     {
  24.         printf("%d",Sqlist1.r[i]);
  25.     }
  26.     SelectSort(&Sqlist1);
  27.         printf("\n排序后:\n");
  28.     for(i=0;i<Sqlist1.length;i++)
  29.     {
  30.         printf("%d",Sqlist1.r[i]);
  31.     }
  32.     system("pause");
  33. }

  34. void Init(Sqlist *L)
  35. {
  36.     L->length=0;
  37. }
  38. void SelectSort(Sqlist *L)
  39. {
  40.     int i;
  41.     int k;
  42.     int j;
  43.     int tmp;
  44.     for(i=0;i<L->length;i++)
  45.     {
  46.         k=i;
  47.         for(j=i+1;j<L->length;j++)//选择最小的记录
  48.             if(L->r[k]>L->r[j])
  49.                 k=j;
  50.         if(k!=i)//把最小的记录交换到i位置
  51.         {
  52.             tmp=L->r[i];
  53.             L->r[i]=L->r[k];
  54.             L->r[k]=tmp;
  55.         }
  56.     }
  57. }

阅读(724) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~