算法和数据结构---排序--简单选择排序

从今天开始努力。

头文件。

#define MAXSIZE 20 /* 一个用作示例的小顺序表的最大长度 */
typedef int KeyType; /* 定义关键字类型为整型 */
typedef struct
{
KeyType key; /* 关键字项 */
InfoType otherinfo; /* 其它数据项,具体类型在主程中定义 */
} RedType; /* 记录类型 */
typedef struct
{
RedType r[MAXSIZE+1]; /* r[0]闲置或用作哨兵单元 */
int length; /* 顺序表长度 */
} SqList; /* 顺序表类型 */

 

返回最小值的函数

int SelectMinKey(SqList L,int i)
 { /* 返回在L.r[i..L.length]中key最小的记录的序号 */
   KeyType min;
   int j,k;
   k=i; /* 设第i个为最小 */
   min=L.r[i].key;
   for(j=i+1;j<=L.length;j++)
     if(L.r[j].key<min) /* 找到更小的 */
     {
       k=j;
       min=L.r[j].key;
     }
   return k;
 }

 简单选择排序

void SelectSort(SqList *L)
 { /* 对顺序表L作简单选择排序。*/
   int i,j;
   RedType t;
   for(i=1;i<(*L).length;++i)
   { /*  选择第i小的记录,并交换到位 */
     j=SelectMinKey(*L,i); /* 在L.r[i..L.length]中选择key最小的记录 */
     if(i!=j)
     { /* 与第i个记录交换 */
       t=(*L).r[i];
       (*L).r[i]=(*L).r[j];
       (*L).r[j]=t;
     }
   }
 }

 更简单的用代码表示为

 

void selectsort()
{
   for(int i=0;i<n-1;i++)
 {
     for(int j=i+1;j<n;j++)
    {
       if(x[j]<x[i]) swap(x[j],x[i]);
    }
  }
}

 

转载于:https://www.cnblogs.com/tgkx1054/archive/2012/07/16/2594343.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值