C语言之冒泡排序(数组)

//数组--冒泡排序
//1.经典错误版

#include
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
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;
}

你可能感兴趣的:(算法,java,数据结构)