打印
[菜农助学交流]

函数指针作为函数参数实现冒泡排序

[复制链接]
2244|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
/*/////////////////////////////////////////////////////////////////////////////
文件名:函数指针
时间:2011/9/17
/////////////////////////////////////////////////////////////////////////////*/
///////////////////////////////////////////////////////////////////////////////
#include<stdio.h>

///////////////////////// 宏定义 //////////////////////////////////////////
#define N 10

///////////////////////// 函数声明 //////////////////////////////////////////
void swap(int *a,int *b);
/*/////////////////////////////////////////////////////////////////////////////
函数名:Display
函数功能:输出数组元素
入口参数:int a[],int n
出口参数:
/////////////////////////////////////////////////////////////////////////////*/
void Display(int a[] , int n)
{
int i;
for(i=0; i<n; i++)
printf( "%4d" , a[i] );//打印4位的宽度
}

/*/////////////////////////////////////////////////////////////////////////////
函数名:BubbleSort
函数功能:主函数
入口参数:无
出口参数:无
/////////////////////////////////////////////////////////////////////////////*/
void BubbleSort( int a[] , int n , int(*compare)( int , int ))
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n-1;j++)
if((*compare)(a[j],a[j+1]))
swap(&a[j],&a[j+1]);
}
/*/////////////////////////////////////////////////////////////////////////////
函数名:swap
函数功能:交换数组函数
入口参数:int *a,int *b
出口参数:无
/////////////////////////////////////////////////////////////////////////////*/
void swap(int *a,int *b)
{
int t;
t=*a;
*a=*b;
*b=t;
}
/*/////////////////////////////////////////////////////////////////////////////
函数名:Ascending
函数功能:判断相邻数据大小,如果前者大,升序排列需要
交换
入口参数:int *a,int *b
出口参数:无
/////////////////////////////////////////////////////////////////////////////*/
int Ascending(int a,int b)
{
if(a>b)
return 1;
else
return 0;
}
/*/////////////////////////////////////////////////////////////////////////////
函数名:Ascending
函数功能:判断相邻数据大小,如果前者小,升序排列需要
交换
入口参数:int *a,int *b
出口参数:无
/////////////////////////////////////////////////////////////////////////////*/
int Descending(int a,int b)
{
if(a<b)
return 1;
else
return 0;
}

/*/////////////////////////////////////////////////////////////////////////////
函数名:main
函数功能:主函数
入口参数:无
出口参数:无
/////////////////////////////////////////////////////////////////////////////*/
void main()
{
int flag;
int a[N] = {12,34,21,46,89,54,26,8,6,17};//排序前的数组

while(1)
{
printf("输入1:从小到大排序。\n请输入2:从大到小排列.\n输入3:退出!\n");
scanf("%d",&flag);
switch( flag )
{
case 1:
printf("排序前的数据为:\n");
Display( a , N );
printf("\n");
BubbleSort(a,N,Ascending);
printf("从小到大排列顺序为:\n");
Display( a , N );
printf("\n");
break;
case 2:
printf("排序前的数据为:\n");
Display( a , N );
printf("\n");
BubbleSort(a,N,Descending);
printf("从小到大排列顺序为:\n");
Display( a , N );
printf("\n");
break;
case 3:
return;
break;
default:
printf("输入不合法,请重新输入。\n");
break;
}
}
}

效果图如下:

相关帖子

沙发
hotpower| | 2011-9-19 06:18 | 只看该作者
本帖最后由 hotpower 于 2011-9-20 00:45 编辑

学习就应该钻研。

但是没在M0上运行,不算笔记

使用特权

评论回复
板凳
hotpower| | 2011-9-20 06:25 | 只看该作者
看了你上传的程序大部分是控制台程序,hotisp就支持控制台回显,用它运行你的程序,
可以在windows里“不出台”

使用特权

评论回复
地板
tao560532|  楼主 | 2011-9-21 10:17 | 只看该作者
哦,谢谢大叔

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:技术源于积累,成功源于执着!

31

主题

366

帖子

1

粉丝