/*下面程序的功能是:调用Sort()排序函数,通过传递相应参数用选择法按升序(或降序) 对数组中的数进行排序。假设数组中存储数据为{88,67,78,56,90},若升序排序则结果为: {56,67,78,88,90},若降序排序则结果为 {90,88,78,67,56}。 */ #include <stdio.h> #include <stdlib.h> #define N 5 void Sort(int score[],int n,int (*compare)(int a,int b));//排序函数声明 int Ascending(int a,int b);//升序 int Descending(int a,int b);//降序 int main() { int i; int score[N]={88,67,78,56,90}; Sort(score,5,Ascending);//升序排序 printf("The Ascending(ÉýÐò) Sort is:"); for(i=0;i<5;i++) printf("%d ",score[i]); Sort(score,5,Descending);//降序排序 printf(" The Descending(½µÐò) Sort is:"); for(i=0;i<5;i++) printf("%d ",score[i]); return 0; } void Sort(int score[],int n,int(*compare)(int a,int b)) { int i,j,k; int t1,t2; for(i=0;i<n-1;i++){ k=i; for(j=i+1;j<n;j++){ if(compare(score[j],score[k])) k=j; } if(k!=i) { t1=score[k];score[k]=score[i];score[i]=t1; } } } int Ascending(int a,int b) { return a<b; } int Descending(int a,int b) { return a>b; }
运行结果: