选择排序是排序中非常基本的排序,也是非常重要的排序
基本思想:
将下面的数据按照从小到大的顺序排列
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"); }
执行结果: