利用函数指针对数组进行排序

#include<stdio.h>
int compare(int a,int b)
{
	return a - b;
}
void sort(int *a,int n,int(*p)(int,int))
{
	int i,j;
	/*
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(p(a[j],a[j+1])>0)
			{
				int temp;
				temp = a[j+1];
				a[j+1] = a[j];
				a[j] = temp;
			}
		}

	}
	*/
	//冒泡排序的两种形式
	for(i=0;i<n;i++)
	{
		for(j=i;j<n;j++)
		{
			if(p(a[i],a[j])>0)
			{
				int temp;
				temp = a[j];
				a[j] = a[i];
				a[i]=temp;
			}
		}

	}


}
void print(int *a,int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%d\t",*(a+i));
	}
	printf("\n");
}
int main()
{
	int a[5]={5,4,3,2,1};
	sort(a,5,compare);
	print(a,5);
	return 0;
}

posted @ 2016-01-15 16:27  zfyouxi  阅读(961)  评论(0编辑  收藏  举报