将数组 a[10] = {7,2,9,4,1,3,8,6,5,0}从小到大排序并打印结果
打印函数
void printA(int *a,int len)
{
int i;
for(i = 0; i < len; i++)
{
printf("%4d",a[i]);
}
printf("\n");
}
交换函数
void Swap(int *a,int i,int j)
{
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
选择排序
void select(int *a, int len)
{
int i,j;
int min; //min记录最小数下标
for(i = 0; i < len; i++) //外层循环控制轮数,每轮找出一个最小数
{
min = i;
for(j = i+1; j < len; j++) //内层循环每一轮找出最小数下标
{
if(a[min] > a[j])
{
min = j;
}
}
if(min != i) //当下标改变时交换两数位置
{
Swap(a,i,min);
}
}
}
main函数调用
int main()
{
int a[10] = {7,2,9,4,1,3,8,6,5,0};
int len = sizeof(a)/sizeof(a[0]);
select(a,len);
printA(a,len);
return 0;
}