C语言选择排序(函数版)
代码
//排序
#include<stdio.h>
//数组大小为10,可根据需要自行修改
#define N 10
//选择排序函数
void select_sort(int num[],int n) //存放要排序数的数组,要排序数的个数
{
int i,j,k,t; //i,j为遍历变量,k为最小或最大的数的下标,t为临时交换变量
for(i=0;i<n-1;i++) //外圈从第一个位置遍历到倒数第二个位置
{
k=i; //先记录此次遍历最值的下标
for(j=i+1;j<n;j++) //内圈从第i+1个位置遍历到最后一个位置
{
//如果发现有比k小的数
if(num[j]<num[k]) //这里是 < 则从小到大排,> 则从大到小排
{
k=j; //将最值的下标进行更换
}
}
if(k!=i) //如果最值的下标更换了,即最值不是此次遍历的第一个数
{
//将最值的位置与此次遍历的起始位置进行交换,以将最值放到起始位置
t=num[i];
num[i]=num[k];
num[k]=t;
}
}
}
int main()
{
int a[N],n,i; //存放将要排序的数,n为输入的数的个数 ,i遍历变量
printf("请输入需要排序的数的个数:\n");
scanf("%d",&n);
printf("请依次输入要排序的数:\n");
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
select_sort(a,n); //调用选择排序函数
printf("从小到大的排序为:\n");
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return 0;
}