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
这只是学习如何进行整数的排序,现实遇到的问题可能是字符串,中文等等;
我会继续总结;