• 冒泡排序


    博客园的第一篇博客,就先来记录一下最简单的冒泡排序吧。
    冒泡排序是交换排序的一种,下面是冒泡排序的一些特征:

    • 平均时间复杂度:O(n^2)
    • 最坏情况:O(n^2)
    • 最好情况:O(n)
    • 平均空间复杂度,最好最坏平均都为:O(1)
    • 是否稳定:稳定

    冒泡排序的一次循环会将一个最小的元素放到排好序的最终位置上

    话不多说,函数代码如下:

    /**
    * arr 为需要排序的数组名
    * len 为数组长度
    */
    void bubble_sort(int arr[], int len)
    {
        int i, j;
        int flag = 0;	// 标记一趟过后是否有元素交换
        for (i=0; i<len-1; i++) {
            flag = 0;
            for (j=len-1; j>i; j--) {
                if (arr[j-1] > arr[j]) {// 如果前者比后者大,则交换两者
                    int temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                    
                    flag = 1;           // 标记有元素交换过了
                }
            }
            if (!flag)	// 若一趟过后元素未交换过,说明已经排好序
                break;
        }
    }
    

    简单的测试代码如下,直接保存代码编译即可:

    #include <stdio.h>
    
    /**
    * arr 为需要排序的数组名
    * len 为数组长度
    */
    void bubble_sort(int arr[], int len)
    {
        int i, j;
        int flag = 0;	// 标记一趟过后是否有元素交换
        for (i=0; i<len-1; i++) {
            flag = 0;
            for (j=len-1; j>i; j--) {
                if (arr[j-1] > arr[j]) {// 如果前者比后者大,则交换两者
                    int temp = arr[j];
                    arr[j] = arr[j-1];
                    arr[j-1] = temp;
                    
                    flag = 1;           // 标记有元素交换过了
                }
            }
            if (!flag)	// 若一趟过后元素未交换过,说明已经排好序
                break;
        }
    }
    
    void show(int arr[], int len)
    {
        int i;
        for (i=0; i<len; i++) {
            printf("%4d", arr[i]);
        }
        printf("
    ");
    }
    
    int main()
    {
        int n = 4;
        int arr[] = {7, 10, 11, 9};
        bubble_sort(arr, n);
        show(arr, n);
        return 0;
    }
    
  • 相关阅读:
    一次网络IO优化的讨论
    服务器框架回顾
    一个小工具:DebugFile
    TPO-23 C2 Advice on choosing courses
    TPO-23 C1 Post a student announcement
    TPO-22 C2 Revise a music history paper
    TPO-22 C1 Complain about a biased article
    TPO-21 C2 Which elective courses to take
    TPO-20-Apply for the undergraduate research fund
    TPO-21 C1 Find a building for orientation
  • 原文地址:https://www.cnblogs.com/qijinzhi/p/bubble_sort.html
Copyright © 2020-2023  润新知