#include<stdio.h>
#define N 10//定义数组元素个数
int Ascending(int a,int b);//升序排列的函数声明
int Descending(int a,int b);//降序排列的函数声明
void swap(int*,int*);//交换数据的函数声明
void BubbleSort(int a[],int n,int (*compare)(int,int));//声明排序函数,通过函数指针作为函数调用
void Display(int a[],int n);//输出数组元素的函数声明
void main()
{
int a[N]={12,34,21,46,89,54,26,8,6,17};
int flag;
while(1)
{
printf("输入1:从小到大排序。\n输入2:从大到小排序\n输入3:退出!\n");
scanf("%d",&flag);
switch(flag)
{
case 1:
printf("排序前的数据为:");
Display(a,N);
BubbleSort(a,N,Ascending);//从小到大排序,将函数作为参数传递
printf("从小到大排列后的数据为:");
Display(a,N);
break;
case 2:
printf("排序前的数据为:");
Display(a,N);
BubbleSort(a,N,Descending);//从大到小排序,将函数作为参数传递
printf("从大到小排列后的数据为:");
Display(a,N);
break;
case 3:
return;
break;
default:
printf("输入数据不合法,请重新输入。\n");
break;
}
}
}
//冒泡排序,将函数作为参数传递,判断是从小到大还是从大到小排序
void BubbleSort(int a[],int n,int(*compare)(int,int))
{
int
函数指针作为函数参数,实现冒泡排序的升序排序和降序排序
最新推荐文章于 2023-10-09 16:36:30 发布