美文网首页
算法—冒泡排序

算法—冒泡排序

作者: 大王饿了 | 来源:发表于2018-03-25 00:08 被阅读4次

冒泡排序介绍

冒泡排序(Bubble Sort)
它是中较简单的排序算法。它会遍历若干次要排序的数组,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换他们的位置,这样一次遍历之后,最大的元素就在数组的末尾。采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数组都排好序为止。

冒泡排序的时间复杂度

冒泡排序的时间复杂度是O(N^2)

冒泡排序的稳定性

冒泡排序是稳定的算法,它满足稳定算法的定义

算法的稳定性:假设在数列中存在a[i] = a[j], 若在排序之前,a[i]在a[j]前面,并且在排序之后,a[i]仍然在a[j]前面。则这个排序算法是稳定的

PHP代码实现

// 第一种实现
$arr = [23, 4, 65, 1, 3, 99, 10];
BubbleSort($arr);

var_dump($arr);

// 冒泡排序
function BubbleSort(&$arr) {
    for ($i = sizeof($arr) - 1; $i > 0; $i--) {
        for ($j = 0; $j < $i; $j++) {
            if ($arr[$j] > $arr[$j+1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
}


/**
    23  4   65  1   3   99  10

1)  4   23  65  1   3   99  10      i = 6, j = 0 
    4   23  65  1   3   99  10      i = 6, j = 1 
    4   23  1   65  3   99  10      i = 6, j = 2
    4   23  1   3   65  99  10
    4   23  1   3   65  10  99

2)  4   23  1   3   65  10  99      i = 5, j = 0
    4   1   23  3   65  10  99      i = 5, j = 1 
    4   1   3   23  65  10  99
    4   1   3   23  10  65  99

3)  1   4   3   23  10  65  99
    1   3   4   23  10  65  99
    1   3   4   10  23  65  99
 */

// 第二种实现
// 对于一个长度为N的数组,我们需要排序 N-1 轮,每 i 轮 要比较 N-i 次。
// 对此我们可以用双重循环语句,外层循环控制循环轮次,内层循环控制每轮的比较次数

function BubbleSort2(&$arr) {
    $len = sizeof($arr);
    // 外层控制循环次数
    for ($i=1; $i < $len; $i++) {
        // 内存控制每轮比较次数
        for ($j=1; $j < $len-$i; $j++) { 
            $tmp = $arr[$j];
            $arr[$j] = $arr[$j+1];
            $arr[$j+1] = $tmp;
        }
    }
}

相关文章

  • 算法-冒泡排序

    算 法:冒泡排序算法时间复杂度: 冒泡排序算法概述 冒泡排序伪代码 冒泡排序实现 冒泡排序算法概述 冒泡排...

  • 经典排序算法总结

    经典排序算法集锦 冒泡法 排序算法入门之冒泡排序 排序算法入门之冒泡排序优化

  • 七大排序算法之冒泡排序

    七大排序算法之冒泡排序 @(算法笔记)[排序算法, 冒泡排序, C++实现] 冒泡排序介绍 冒泡排序是七大排序算法...

  • 前端算法学习-第一篇

    冒泡排序算法 冒泡排序算法是最慢的排序算法之一,也是最容易实现的排序算法。之所以叫冒泡排序是因为使用这种算法排序时...

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • python 冒泡排序和选择排序算法

    插入排序算法 冒泡排序算法

  • Java基础(冒泡排序与选择排序)

    冒泡排序 冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一...

  • 基本算法——快速排序算法

    快速排序算法是对冒泡算法的改进。所以我们首先来简单的谈谈冒泡算法。 1.冒泡算法 冒泡排序(Bubble S...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

  • 算法:冒泡排序

    本文内容:1、什么是冒泡排序?2、冒泡排序的 C/OC 实现与算法分析。 算法总目录:算法? 1、什么是冒泡排序?...

网友评论

      本文标题:算法—冒泡排序

      本文链接:https://www.haomeiwen.com/subject/xkyccftx.html