zoukankan      html  css  js  c++  java
  • 【算法】冒泡排序

    简介

    冒泡排序,有时候又叫做下沉排序,是一种很简单的排序算法,它通过一系列重复的操作来让一个序列变得有序:
    比较相邻的2项,如果他们不符合排序的顺序,则交换他们的位置,重复这个操作,直到没有元素需要交换为止,这个时候也就意味着序列已经有序了。

    虽然冒泡排序很简单,但是它太慢了,即便是相对插入排序来说。所以于我们一般不会选择它去解决实际的编程问题。

    当序列基本有序,只有几处地方无序,且无需元素间距很近时,我们才会考虑使用它。

    冒泡排序的要点

    • 冒泡排序需要 二重循环,最外层控制 趟数 , 每一趟 会在当前比较序列选出一个最大的数沉底。最内层控制在当前排序序列中找出最大数。
    • n个元素排序,最外层循环趟数是 n-1 ,而不是 n。想想只有一个元素的序列,需要比较几趟呢?显然是 1-1=0趟,因为无需比较。
    • 时间复杂度:        O(n2)
    • 平均时间复杂度 : O(n2)
    • 空间复杂度 :       O(1)
    • 稳定性:              稳定

    如此重复...

    void bubble_sort(int*arr,int len)
    {
        int temp;
        for(int i=0;i<len-1;++i)        //最外层循环控制 "趟" 数
        {
            for(int k=0;k<len-1-i;++k)  //缩短比较序列,循环比较,需要时,交换
                if(arr[k]<arr[k+1])     //降序排序
                {
                    temp = arr[k];
                    arr[k] = arr[k+1];
                    arr[k+1] = temp;
                }
        }
    }
  • 相关阅读:
    django--模型层(orm)-查询补充及cookie
    django-模型层(model)-多表相关操作(图书管理练习)
    Linux-正则表达式与三剑客
    网络配置命令优先级和元字符
    Linux-Nginx和NFS
    Linux-内存进程和软件安装
    乌龟棋
    倍增 Tarjan 求LCA
    切蛋糕
    HDU1505 City Game/玉蟾宫/全0子矩阵 悬线法
  • 原文地址:https://www.cnblogs.com/lulipro/p/5559804.html
Copyright © 2011-2022 走看看