选择排序法
- 基本原理
在每一步中选取最小(大)值来重新排列,从而达到排序的目的。 - 排序过程
1.首先通过n-1次比较,从n个数中找出最小(大)的,将它与第一个数交换–第一趟选择排序,结果最小(大)的数被安置在第一个元素位置上;
2.再通过n-2次比较,从剩余的n-1个数中找出最小(大)的,将它与第二个数交换–第二趟选择排序;
3.重复上述过程,共经过n-1趟排序后,排序结束。
具体代码如下:
此处例子是从小到大排序。
//选择排序(从小到大)
#include<stdio.h>
int main()
{
int a[10]= {
0,8,9,4,3,6,7,5,1,2};
int i,j,k,t; //i作为数组下标,j作为找到最大值时所对应的下标,K用来保存此次循环中最小(大)值的下标
for(i=0; i<10; i++)
{
k=i; //假设第一个数就是最小(大)的
for(j=i+1; j<10; j++)
if(a[j]<a[k]) //按照从小到大的顺序排列
k=j; //K用来保存此次循环中最小(大)值的下标
if(k!=i) //如果此次循环中的最小(大)值并非假设的最小(大)值,则交换。
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
for(i=0; i<10; i++)
printf("%d ",a[i]);
return 0;
}