选择排序,简单来说就是一组int数组,每一轮在未排序组中选择min值,然后依次放入已排序组中(从小到大)
排序需要两个循环(一套一)
假如数组共有n个数,那么外循环一共要循环n-1轮(选择min值),内循环第一次是n-1次,第二次就是n-2次。。。
//选择排序
#include<stdio.h>
int main()
{
int a[6]={1,32,43,22,75,12};
int i,j,min,tmp;
for(i=0;i<6-1;i++)//每一轮结束后数组便将本轮min值排序到数组最前面
{
min=i;//标记本轮最小值
for(j=i;j<6;j++)//每一轮结束后数组前几项为已排序项,所以本轮循环从j=i开始
{
if(a[min]>a[j])
min=j; //重新标记min值(此时数组里的值未改变,这里仅是标记)
}
if(min!=i)
{
tmp=a[min];
a[min]=a[i];
a[i]=tmp;//依次在数组中存放由小到大的数
}
}
for(i=0;i<6;i++)
{
printf("%5d",a[i]);
}
return 0;
}