设为首页 加入收藏

TOP

C语言实现冒泡排序-整数排序(二)
2015-11-10 13:46:16 来源: 作者: 【 】 浏览:32
Tags:语言 实现 冒泡 排序 整数
turn number_1 > number_2 ? 1:0;
}


void swap(int *number_1,int *number_2)
{
? ? int tmp ;
? ? tmp = *number_1;
? ? *number_1 = *number_2;
? ? *number_2 = tmp;
}


注意,因为你修改来swap得函数参数,因此在bubble_sort函数里面调用swap时会报错,你可以修改为如下:


void bubble_sort(int arr[],int len)
{
? ? int i,j;
? ? for (i = 0;i < len -1; i++)
? ? {
? ? ? ? for (j = 0 ; j < len - 1 -i ; j++)
? ? ? ? {


? ? ? ? ? ? if (cmp_int(arr[j],arr[j+1]))
? ? ? ? ? ? ? ? swap(&arr[j],&arr[j+1]);
? ? ? ? }
? ? }
}


运行,结果如下:



可以看出,交换函数已经正常工作;


接下来测试排序主函数;


int main(void)
{
? ? int numbers[] = { 4,3,5,1,2 };
? ? int i ;
? ? for (i = 0; i < 5; ++i)
? ? {?
? ? ? ? printf("%d\t",numbers[i]);


? ? }?
? ? puts("");


// For Test cmp_int function
? ? if (cmp_int(1,2)){
? ? ? ? //if 1 > 2,return 0
? ? ? ? puts("Biger");
? ? }else{
? ? ? ? puts("smaller");
? ? }?
// For Test swap function
? ? int x = 100;
? ? int y = 200;
? ? printf("x = %d\ty = %d\n",x,y);
? ? swap(&x,&y);
? ? printf("x = %d\ty = %d\n",x,y);
//For Test bubble_sort function
? ? bubble_sort(numbers,5);
? ? for (i = 0; i < 5; ++i)
? ? {?
? ? ? ? printf("%d\t",numbers[i]);


? ? }?
? ? puts(" ");
? ? return 0;
}



结果运行正确;


最后去掉所有无关紧要的测试代码;


所有代码如下:


#include


int cmp_int(int number_1,int number_2);
void swap(int *number_1,int *number_2);
void bubble_sort(int arr[],int len);


int main(void)
{
? ? int numbers[] = { 4,3,5,1,2 };
? ? int i ;
? ? for (i = 0; i < 5; ++i)
? ? {?
? ? ? ? printf("%d\t",numbers[i]);


? ? }?
? ? puts("");
? ?
? ? bubble_sort(numbers,5);
? ? for (i = 0; i < 5; ++i)
? ? {?
? ? ? ? printf("%d\t",numbers[i]);


? ? }?
? ? puts(" ");
? ? return 0;
}


int cmp_int(int number_1,int number_2)
{
? ? return number_1 > number_2 ? 1:0;
}
void swap(int *number_1,int *number_2)
{
? ? int tmp ;
? ? tmp = *number_1;
? ? *number_1 = *number_2;
? ? *number_2 = tmp;
}
void bubble_sort(int arr[],int len)
{
? ? int i,j;
? ? for (i = 0;i < len -1; i++)
? ? {?
? ? ? ? for (j = 0 ; j < len - 1 -i ; j++)
? ? ? ? {?


? ? ? ? ? ? if (cmp_int(arr[j],arr[j+1]))
? ? ? ? ? ? ? ? swap(&arr[j],&arr[j+1]);
? ? ? ? }?
? ? }?
}


Discussion


这只是学习如何进行整数的排序,现实遇到的问题可能是字符串,中文等等;


我会继续总结;


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言实现二叉树-利用二叉树统计.. 下一篇C语言实现快速排序

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: