C27-简单选择排序法
一 基本思想
每轮从待排序序列中选出最小或最大的元素,与待排序区间起始位置交换,逐步缩小待排序区间
二 算法实现
-
遍历数组:设数组长度为n,外层循环i从0到n-2(共n-1轮)
-
找最小值下标:内层循环j从i+1到n-1,遍历待排序区间(i到n-1),记录找最小值下标min
-
交换元素:将arr[i]与arr[min]交换,完成一轮排序
三 示例
-
代码
#include <stdio.h>
int main()
{//数组及相关数据定义int arr[4]={12,4,78,23};int i;int j;int temp;int len=sizeof(arr)/sizeof(arr[0]);//基于简单选择排序的数据交换for(i=0;i<len-1;i++){for(j=i+1;j<len;j++){if(arr[i]<arr[j]){temp=arr[i];arr[i]=arr[j];arr[j]=temp;}}}//基于循环的数组输出puts("数组arr里的元素从大到小遍历输出为:");for(i=0;i<len;i++){printf("%d,",arr[i]);}return 0;
}
- 结果