选择排序是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(或最大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。
具体实现方法:若整形数组中存放n个元素
第一轮 :先进行n-1次比较,找出最小值,并与第一个数进行交换。
第二轮:在剩下的n-1个数中进行n-2次比较,找出最小值,并于第二个数进行交换。
......
经过n-1轮后,排序结束。
示例代码如下:
#include<stdio.h>
#define N 5
int main(int argc, char const *argv[])
{
int a[N]={5,2,8,2,4};
int i,j,t;
for(i=0;i<N-1;i++)//进行的轮数
{
int k=i;//k用来保存每轮最小值的下标
for(j=i+1;j<N;j++)//每轮比较的次数
{
if(a[j]<a[k])//找出最小值
k=j;
}
if(i!=k)//判断最小值是否在指定位置,若不是,则交换
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(int s=0;s<N;s++)
{
printf("%d ",a[s]);
}
printf("\n");
return 0;
}
结束语:感谢大家观看!