选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
过程演示:
实例:
//选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
#include
void main()
{
int i,j,temp;
int a[]=;
int len=8;
/*
len - 1:
当前面都是最小的数字了,则最后还剩一个数就没有比较的必要了,最后一个数字已经和len-2那个数字进行了比较
*/
for (i = 0 ; i < len - 1 ; i++)
{
//每次假定当前i是最小值
int min = i;
// 访问未排序的元素
for (j = i + 1; j < len; j++)
{
//找到剩下的未排序元素中的最小值
if (a[j] < a[min])
{
//记录实际的最小值(或剩下元素中的最小值)
min = j;
}
}
/*
如果实际的最小值(或剩下元素中的最小值)的索引与当前索引不同
则当前索引不配做最小值,应该交换
*/
if(min != i)
{
// 交换两个变量
temp=a[min];
a[min]=a[i];
a[i]=temp;
}
}
//遍历结果
for(int x=0;x
printf("%d\n",a[x]);
}
}