有n个整数,需要对他们进行各种排序:升序排序、降序排序、按个位数升序排序、按十位数降序排序,为了提高代码的重用性,可以用指向函数的指针作排序函数的参数。
程序输入n+2个整数:
第一行是整数n,表示后面有n个整数需要排序
第二行是待排序的n个整数
第三行是排序需求,分别是1-4,依次表示升序排序、降序排序、按个位数升序排序、按十位数降序排序
程序的输出是排好序的n个整数,两个整数之间用空格隔开
函数接口定义:
需要实现以下函数:
void sort(int *p, int (*compare)(int a,int b), int N); int Descending(int a, int b); int bit1_Des(int a, int b);
其中 p 是数据的首地址, N 是需要排序的数据个数, compare 是指向函数的指针。sort函数用选择法进行排序
裁判测试程序样例:
#include
void sort(int *p, int (*compare)(int a,int b), int N);
int Ascending(int a, int b);
int Descending(int a, int b);
int bit0_Asc(int a, int b);
int bit1_Des(int a, int b);
int main()
{ int n=10,k;
int *s,*p;
int (*fun)(int,int);
scanf("%d",&n);
p=(int*)malloc(n*sizeof(int));
for(s=p; sb;
}
int bit0_Asc(int a, int b)
{
return a%10>b%10;
}
输入样例:
11
886 461 856 581 514 272 197 182 564 121 894
3
输出样例:
461 581 121 272 182 514 564 894 856 886 197
#include
int Descending(int a, int b) //降序排序
{
return a < b;
}
int bit1_Des(int a, int b) //按十位数降序排序
{
return a/10%10 < b/10%10;
}
void sort(int *p, int (*compare)(int a,int b), int N)
{
//用选择法进行排序
int i,j,k,t;
for(i=0;i
b; } int bit0_Asc(int a, int b) { return a%10>b%10; }
11 886 461 856 581 514 272 197 182 564 121 894 3



