简单的选择排序,就是从未排序的元素中选择出最小的一个,放在相应的位置。比如,首先是从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;
}
}
}