选择排序法
sort(int x[],int n){
int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=j+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i) /*这是一个用选择排序的函数但这行是什么意思?*/
{t=x[i];x[i]=x[k];x[k]=t;}
}
}
首先要确定这个排序算法所得排序结果的顺序:这个算法的最终结果是从大到小排列。 所以if(k!=i){...}的意思是如果后面的数有比x[i]大,就把它交换过来。 可以编程如下测试结果: #include <stdio.h>
void sort(int x[],int n) { int i,j,k,t; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(x[j]>x[k]) k=j; if(k!=i) /*这是一个用选择排序的函数但这行是什么意思?*/ { t=x[i]; x[i]=x[k]; x[k]=t; } } }
void main() { int x[10]; int count; int counter;
for(count=0;count<10;count++) { counter=count+1; printf("The %dth number:\t",counter); scanf("%d",&x[count]); fflush(stdin); } sort(&x[0],10);
for(count=0;count<10;count++) { printf("%5d",x[count]); } printf("\n");
}