C语言用选择法排序
希望可以用简单一点的语句,本人初学者 展开
#include <stdio.h>
void select_sort(int *x, int n);
void main(void)
{
int a[]={6,3,42,23,35,71,98,67,56,38};
for(int i=0;i<10;i++)
printf("%-5d",a[i]);
printf("\n");
select_sort(a,10);
for(int j=0;j<10;j++)
printf("%-5d",a[j]);
}
void select_sort(int *x, int n)
{
int i, j, min, t;
for (i=0; i<n-1; i++) /*要选择的次数:0~n-2共n-1次*/
{
min = i; /*假设当前下标为i的数最小,比较后再调整*/
for (j=i+1; j<n; j++)/*循环找出最小的数的下标是哪个*/
{
if (*(x+j) < *(x+min))
{
min = j; /*如果后面的数比前面的小,则记下它的下标*/
}
}
if (min != i) /*如果min在循环中改变了,就需要交换数据*/
{
t = *(x+i);
*(x+i) = *(x+min);
*(x+min) = t;
}
}
}