1.算法介绍-基本思想
基本思想:
(1)首先在一个无序数列中,找到一个最小的值,然后把它与第一个数互掉位置;
(2)固定第一个值(最小数),然后在剩余无序数列中找到次小数,将它与第二个数互换位置;
(3)重复前面的步骤之后,可以得到一个排列好的数列;
2.算法演示
比如现在有一个无序数列为a;
45 | 80 | 48 | 40 | 22 | 78 |
(1)找到其中的一个最小值,我们能看到是22;那么我们把22放在数列第一个!
22 | 80 | 48 | 40 | 45 | 78 |
(2)然后再后续数列中,再找到一个次小的,跟第二个数互换位置,很明显,次小是40,那就跟80互换位置!
22 | 40 | 48 | 80 | 45 | 78 |
(3)重复(1)过程!
22 | 40 | 45 | 80 | 48 | 78 |
22 | 40 | 45 | 48 | 80 | 78 |
22 | 40 | 45 | 48 | 78 | 80 |
3.C语言实现简单选择排序
#include<stdio.h>
#include<string.h>
void SelectSort(int *a,int length)
{
int i,j,tmp,index;
for(i=0;i<length-1;i++)
{
tmp=a[i];
index=i;
for(j=i+1;j<length;j++)
{
if(a[j]<tmp)
{
tmp=a[j];
index=j;
}
}
if(index!=i)
{
a[index]=a[i];
a[i]=tmp;
}
}
}
int main()
{
int i;
int array[11 ]={1,8,5,4,5,6,2,3,4,5,2};
SelectSort(array,sizeof(array)/sizeof(array[0]));
for(i=0;i<(sizeof(array)/sizeof(array[0]));i++)
{
printf("%d",array[i]);
}
return 0;
}