简单选择排序的实现

     简单的选择排序,就是从未排序的元素中选择出最小的一个,放在相应的位置。比如,首先是从N(假设数组有N个元素)元素中找出最小的一个,然后和第一个元素相比较。如果它比第一个元素小,则交换其与第一个元素的值。否则,说明第一个元素即为最小值,无需移动。接着再在剩下的N-1个元素中找到最小的一个,与第二个元素相比较,若小于则交换值。以此类推,直至最后一个元素。

    以上的方法得出的是升序排列,同时也可以找出最大的元素,实现降序排序。以下是升序排序的相关代码:

选择排序
int f_small(int *a,int begin,int end)
{
 int i,p=begin;
 for (i=begin;i<=end;i++)
 {
  if (a[i]<a[p])
  {
   p=i;
  }
 }
 return p;
}

void select(int *a,int n)
{
 int small_num,temp;
 int current;
 for(current=0;current<n-1;current++)
 {
  small_num=f_small(a,current,n-1);
  if (small_num!=current)
  {
   temp=a[current];
   a[current]=a[small_num];
   a[small_num]=temp;
  }
 }
}

转载于:https://www.cnblogs.com/xingma0910/archive/2012/09/21/2696375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值