c语言冒泡排序设计通用的冒泡函数

[C语言] 使用回调函数实现冒泡排序
实现功能:既能排序整型数,也可以排序字符串
代码如下:
#include &stdio.h&
#include &string.h&
int int_cmp(const void *p1, const void *p2)
if (*(int *)p1 & *(int *)p2)
else if (*(int *)p1 == *(int *)p2)
return -1;
void swap(void *p1, void *p2, int size)
int i = 0;
for (i = 0; i & i++)
char tmp = *((char *)p1 + i);
*((char *)p1 + i) = *((char *)p2 + i);
*((char *)p2 + i) =
void bubble(void *base, int count, int size, int(*cmp)(const void *, const void *))
int i = 0;
int j = 0;
for (i = 0; i & count - 1; i++)
for (j = 0; j & count - i - 1; j++)
if (cmp((char *)base +size*j,(char *)base+size*(j+1))&0)
swap((char *)base + size*j, (char *)base + size*(j + 1), size);
int str_cmp(const void *p1, const void *p2)
return strcmp((char *)(*(int *)p1), (char *)(*(int *)p2));
int main()
//int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
char *arr[] = { &dddd&, &bbbb&, &cccc&, &aaaa& };
int i = 0;
bubble(arr, sizeof(arr) / sizeof(arr[0]), sizeof(char *), str_cmp);
for (i = 0; i & 4; i++)
printf(&%s\n&, arr[i]);
printf(&\n&);C语言冒泡法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言冒泡法
上传于|0|0|文档简介
&&C语言冒泡法
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
你可能喜欢C语言调用函数冒泡_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:528,213贴子:
C语言调用函数冒泡收藏
#include &stdio.h&#include &string.h&#define SIZE 9int sum(int array[],int asize);int swap( int *pA, int *pB);void sort(int array[], int asize);void printarray(int array[], int asize);void main( ){int array[9]={8,1,7,3,7,2,9,1,4};int k,x;float Aprintf(&RED ID is &);for(k=0;k&9;k++){
printf(&%d &,array[k]);}printf(&\n&);x= sum (array,SIZE);Average = x/SIZE;printf(&\nSum of Red ID is %d \n&,x);printf(&\n&);printarray(array,SIZE);printf(&\nThe average of the digits in the array is %.2f\n&,Average);}sum(int array[],int asize){int i,sum=0;for(i=0;i&i++){sum += array[i];}}int swap( int *pA, int *pB){int n,array[asize];for(n=0;n&n++){if (*pA & *pB){
return 1;}else{
return 0;}}}int sort_1pass(int array[],int asize){for(a=0;a&a++){
if(array[a]&array[a+1]){
swap(&array[a],&array[a+1]);
}}}void sort(int array[],int asize){for(b=0;b&b++)if(array[b]&array[b+1]){sort_1pass(array,asize);}}void printarray(int array[],int asize){int c,f,l;for(c=0;c&c++){for(f=0;f&f++){sort (array+f,SIZE);
printf(&%d &,array[f]);}printf(&After %d times sorted array \n&,c+1);printf(&\nThe middle digit is %d\n&,array[4]);printf(&\n&);
//假设我想在这 实现每一行 都算一个 平均值 能把sum的值再次传递到这里吗?}}求解。。。。。。。。。。
c语言海同强大的师资阵容,因人制定课程内容,分阶段学习.c语言就到正规IT技术培训机构-海同科技,培训IT技术面对面教学,免费重读!
程序都是错的,排序只是每次把最大的值放到后面而已,你printarray里每次循环显示出来都是错的
那你就排一次遍历一次
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或百度文库-信息提示
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
对不起,该文档已被删除,无法查看
15秒后,自动返回首页}

我要回帖

更多关于 c语言冒泡排序法代码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信