//数组--冒泡排序
//1.经典错误版
#include<stdio.h>
void bubble_sort(int arr[])
{
?? ?//确定冒泡函数的趟数(10个元素,9趟冒泡排序)
?? ?int i = 0;
?? ?int sz = sizeof(arr) / sizeof(arr[0]);//10 ?算出了1 这里错了 传参错了
?? ?for (i = 0; i < sz - 1; i++)//从0开始的 所以i<9就可以
?? ?{
?? ??? ? //每一趟冒泡排序
?? ??? ?int j = 0;
?? ??? ?for (j = 0; j < sz-1-i; j++)
?? ??? ?{
?? ??? ??? ?if (arr[j] > arr[j + 1])
?? ??? ??? ?{
?? ??? ??? ??? ?int tmp = arr[j];
?? ??? ??? ??? ?arr[j] = arr[j + 1];
?? ??? ??? ??? ?arr[j + 1] = tmp;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}
int main()
{
?? ?int arr[] = { 9,8,7,6,5,4,3,2,1,0 };//对arr进行排序,排成升序
?? ?int i = 0;//要打印 要便利数组
?? ?int sz = sizeof(arr) / sizeof(arr[0]); //要打印 要便利数组
?? ?//把arr传过去的时候太浪费空间了 所以实际上传递过去的是数组arr首元素的地址arr[0] 所以要传sz
?? ?bubble_sort(arr);//冒泡排序函数 ?
?? ?for (i = 0; i < sz; i++)//要打印 要便利数组
?? ?{
?? ??? ?printf("%d ", arr[i]);
?? ?}
?? ?return 0;
}
//2.正确版
//所以真正的代码传过去的应该是bubble_sort(arr,sz)
#include<stdio.h>
void bubble_sort(int arr[],int sz)
{
?? ?//确定冒泡函数的趟数(10个元素,9趟冒泡排序)
?? ?int i = 0;
?? ?for (i = 0; i < sz - 1; i++)//从0开始的 所以i<9就可以
?? ?{
?? ??? ?//每一趟冒泡排序
?? ??? ?int j = 0;
?? ??? ?for (j = 0; j < sz - 1 - i; j++)
?? ??? ?{
?? ??? ??? ?if (arr[j] > arr[j + 1])
?? ??? ??? ?{
?? ??? ??? ??? ?int tmp = arr[j];
?? ??? ??? ??? ?arr[j] = arr[j + 1];
?? ??? ??? ??? ?arr[j + 1] = tmp;
?? ??? ??? ?}
?? ??? ?}
?? ?}
}
int main()
{
?? ?int arr[] = { 9,8,7,6,5,4,3,2,1,0 };//对arr进行排序,排成升序
?? ?int i = 0;//要打印 要便利数组
?? ?int sz = sizeof(arr) / sizeof(arr[0]); //要打印 要便利数组
?? ?//把arr传过去的时候太浪费空间了 所以实际上传递过去的是数组arr首元素的地址arr[0] 所以要传sz
?? ?bubble_sort(arr,sz);//冒泡排序函数 ?
?? ?for (i = 0; i < sz; i++)//要打印 要便利数组
?? ?{
?? ??? ?printf("%d ", arr[i]);
?? ?}
?? ?return 0;
}