选择排序是排序中非常基本的排序,也是非常重要的排序
基本思想:
将下面的数据按照从小到大的顺序排列
27 36 32 18 5
排序前:
| 27 | 36 | 32 | 18 | 5 |
第一步:找出五个数字中的最小的数字并放在第一位
| 5 | 36 | 32 | 18 | 27 |
第二步:找出剩下的四个数字中的最小的数字并放在第二位
| 5 | 18 | 32 | 36 | 27 |
第三步:找出剩下的三个数字中的最小的数字并放在第三位
| 5 | 1818 | 27 | 36 | 32 |
第四步:找出剩下的两个数字中的最小的数字并放在第四位
| 5 | 1818 | 27 | 32 | 36 |
排序后的结果:
| 5 | 1818 | 27 | 32 | 36 |
程序代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int a[5] = {27,36,32,18,5};
int i,j;//用于for循环
int min;//保存数组中最小的数字的下标
int temp;//中间变量
printf("排序前的数据:");
for(i=0;i<5;i++)
{
printf("%d ",a[i]);//打印数组排序前的结果
}
printf("\n\n");
for(i=0;i<5-1;i++)
{
min = i;
for(j=i+1;j<5;j++)
{
if(a[j]<a[min])//查找数组中最小数据的下标
{
min = j;
}
}
if(i != min)//数据交换
{
temp = a[min];
a[min] = a[i];
a[i] = temp;
}
}
printf("排序后的数据:");
for(i=0;i<5;i++)
{
printf("%d ",a[i]);//打印数组排序后的结果
}
printf("\n\n");
system("pause");
}
执行结果:
原文:http://blog.csdn.net/u010105970/article/details/18655453