C语言数组(下)

写一个冒泡排序的函数,代码如下:

void bubble_sort(int arr[],int sz)
{
    //确定冒泡排序的函数
    int i = 0;
    for ( i = 0; i < sz - 1; i++)
    {
        int flag = 1;//假设这一趟要排序的数值已经有序
        //每一趟冒泡排序
        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;
                flag = 0;//本趟排序的数据其实不完全有序
            }
        }
        if (flag == 1)
        {
            break;
        }

    }
}
int main()
{
    int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
    int i = 0;
    int sz = sizeof(arr) / sizeof(arr[0]);
    //对arr进行排序,排成升序
    //arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址 &arr[0]
    bubble_sort(arr,sz);//冒泡排序函数
    for ( i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

其中要注意的是,arr是数组,我们对数组arr进行传参,实际上传递过去的是数组arr首元素的地址 &arr[0],如果想求数组的元素个数就要先在外面求好再传参进去。


数组名数组首元素的地址。(有两个例外)
1.sizeof(数组名) - 数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节。
2.&数组名,数组名代表整个数组,&数组名,取出的是整个数组的地址。


总结:
要区分我们传的是首元素的地址还是整个数组的地址,这两个的意义是不一样的。
2021.1.27
永远相傻瓜计算机

上一篇:UVA12003 Array Transformer(数组分块)


下一篇:二分查找指定的数,总是”找不到“,解决办法