zoukankan      html  css  js  c++  java
  • 冒泡排序

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

    • 平均时间复杂度: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;
    }
    
  • 相关阅读:
    RAID中条带的概念
    关于几个与IO相关的重要概念
    分布式调度
    ajax
    choices参数
    1.Python实现字符串反转的几种方法
    django web框架
    CRM总结
    Python面试重点(web篇)
    day02-网编并发数据库
  • 原文地址:https://www.cnblogs.com/qijinzhi/p/bubble_sort.html
Copyright © 2011-2022 走看看