#include<stdio.h>
#include<stdlib.h>
void swap(int *p,int *q)//定义元素交换函数
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
void sort_func(int data[],int n)//回调函数,内部采用选择排序法
{
int max=0;
int max_pos=0;
for(int i=0;i<n;i++)
{
max=data[i]; max_pos=i;
for(int j=i;j<n;j++)
{
if(data[j]>max)
{
max=data[j];
max_pos=j; } } if(max_pos!=i)
{
swap(&data[i],&data[max_pos]);
}
}
}
void sort(void (*sort_func)(int data[],int n),int data[],int n)//排序函数,调用回调函数
{
sort_func(data,n);
}
int main()//测试
{
int data[10]={1,3,2,9,10,4,6,7,5,8};
sort(sort_func,data,10);
for(int i=0;i<10;i++)
{
printf("%d\n",data[i]);
}
system("pause");
return 0;
}
#include<stdlib.h>
void swap(int *p,int *q)//定义元素交换函数
{
int temp;
temp=*p;
*p=*q;
*q=temp;
}
void sort_func(int data[],int n)//回调函数,内部采用选择排序法
{
int max=0;
int max_pos=0;
for(int i=0;i<n;i++)
{
max=data[i]; max_pos=i;
for(int j=i;j<n;j++)
{
if(data[j]>max)
{
max=data[j];
max_pos=j; } } if(max_pos!=i)
{
swap(&data[i],&data[max_pos]);
}
}
}
void sort(void (*sort_func)(int data[],int n),int data[],int n)//排序函数,调用回调函数
{
sort_func(data,n);
}
int main()//测试
{
int data[10]={1,3,2,9,10,4,6,7,5,8};
sort(sort_func,data,10);
for(int i=0;i<10;i++)
{
printf("%d\n",data[i]);
}
system("pause");
return 0;
}