冒泡排序

#include <stdio.h>

void bubble_sort(int arr[], int sz)
{
    int i = 0;
    for (i=0; i<sz-1; i++)  // 外层是比较的轮数
    {
        int j = 0;
        for (j = 0; j < sz-i-1; j++) // 内层是每轮比较的次数
        {
            if (arr[j] > arr[j + 1])  //比较后进行交换
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
            }
        }
    }
}

int main()
{
    int arr[] = {10, 12,9,6,13};
    int sz = sizeof(arr) / sizeof(arr[0]); //求得数组长度
    int i = 0;
    bubble_sort(arr, sz); 
    for (i = 0; i < sz; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

注意:求得的sz一般要在函数外求得,然后作为参数传入函数 也就是说,数组arr在传入的时候是只传入了首元素的地址,而非arr本身。函数内部的arr已经不是原来的了,所以函数内部求sz也是错误的。