冒泡排序


// 通过指针交换两个元素的值
void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}
/****************************************************************
 * name;BubbleSort
 * function:sort
 * parameter;
 *              @int arr[]
 *              @int arrsize
 *
 * ReValue;none
 * author;小北blog
 * attention;none
 * date;2024.06.01
 * history;
 * version;
 * Copyright(c) 2024 huahuadebaby99@163.com All rights reserved
 *****************************************************************/
void BubbleSort(int arr[], int arrsize)
{
    int i, j, temp = 0;
    for (i = 1; i < arrsize; i++) // 比较arrsize-1轮
    {
        for (j = 0; j < arrsize - i; j++) // 每轮交换arrsize - i次
        {
            if (arr[j] > arr[j + 1]) // 判断大小
            {
                swap(&arr[j], &arr[j + 1]);
            }
        }
    }
}
// 打印数组
void printArray(int arr[], int size)
{
    for (int i = 0; i < size; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
}
// 主函数
int main()
{
    int arr[] = {77, 66, 44, 11, 99, 55};
    int n = sizeof(arr) / sizeof(arr[0]);
    printf("原来的数组: \n");
    printArray(arr, n);
    BubbleSort(arr, n);
    printf("排序后的数组: \n");
    printArray(arr, n);
    return 0;
}

运行结果:

总结: 冒泡排序的中心思想就是循环交换,框架是两个for循环,比较从左往右,第一个for循环次数是数组大小减一,减一因为第一个数不用和自己比较,然后第二个for是依次向后比较,直到第一个for循环第二次。
该时间间复杂度是O(n*n)。

冒泡排序可视化动态视频链接 https://www.bilibili.com/video/av640745079/?vd_source=966b6a1b1d22c74a32915c72897dc542

posted @ 2024-06-01 15:26  小北bolg  阅读(30)  评论(0)    收藏  举报