直接选择排序比较简单,步骤:
(1)选出序列中最小的元素;
(2)和序列中第一个元素进行交换;
(3)从序列第二个位置开始,在剩余的序列元素中重复上面的步骤直到排序完成。
代码如下:unix环境2011-02-12
#include <stdio.h>
#include <stdlib.h>
void print(int a[], int len)
{
int i;
for(i = 0; i < len; i++)
printf("%d/n",a[i]);
}
void SelectSort(int a[], int len)
{
int i,j,k,temp;
for(i = 0; i < len-1; i++)
{
k = i;
for(j = i+1; j < len; j++)
{
if(a[k] > a[j])
{
k =j;
}
}
temp = a[i];
a[i] = a[k];
a[k] = a[i];
}
}
int main(int argc,char *argv[])
{
int len = 10;
int a[len];
int i = 0;
for(i = 0; i < len; i++)
{
a[i]=rand();
}
printf("the list befor sorting is:/n");
print(a, len);
printf("the list after sorting is:/n");
SelectSort(a, len);
print(a, len);
return 0;
}