PHP算法题:如何实现冒泡排序

简介: PHP算法题:如何实现冒泡排序

算法原理:



1.比较相邻的元素,如果第一个比第二个大,那么就交换这两个元素。


2.对每一对相邻元素做同样的工作,从第一对开始到最后一对结束,最后的元素应该会是最大的数。


3.除了最后一个元素外,针对其他的元素重复以上步骤。


4.对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为止。


实现代码:



<?php
    header("Content-type:text/html;charset=utf-8");
    // 性能最差的冒泡排序方法
    function maopao1($arr) {
    $len = count($arr);  //计算数字长度
        for ($i = 1; $i < $len; $i++) {
          // 该层循环控制需要冒泡的轮数
            for ($k = 0; $k < $len -$i; $k++) {
                if ($arr[$k] > $arr[$k+1]) {
                    $tmp = $arr[$k];
                    $arr[$k] = $arr[$k+1];
                    $arr[$k+1] = $tmp;
                }
            }
        }
        return $arr;
    }
    // 性能最好的冒泡排序方法
    function maopao2($arr) {
        // 设置变量的初始值
        $low = 0;
        $high = count($arr) -1;
        while ($low < $high) {
            // 正向冒泡,找到最大值
            for ($j = $low; $j < $high; ++$j) {
                if ($arr[$j] > $arr[$j+1]) {
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j+1];
                    $arr[$j+1] = $tmp;
                }
            }
            --$high;
            // 放向冒泡,找到最小值
            for ($j = $high; $j > $low; --$j) {
                if ($arr[$j] < $arr[$j-1]) {
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j-1];
                    $arr[$j-1] = $tmp;
                }
            }
            ++$low;
        }
        return $arr;
    }
    $arr = array(121,656,8997,11,56456,778,65454,314354,1121);
    echo "排序前:";
    foreach ($arr as $k => $val) {
        echo $val.' ';
    }
    echo "<br>方法一排序后:";
    $arr = maopao1($arr);
    foreach ($arr as $k => $val) {
        echo $val.' ';
    }
    echo "<br>方法二排序后:";
    $arr = maopao2($arr);
    foreach ($arr as $k => $val) {
        echo $val.' ';
    }
?>



目录
相关文章
|
30天前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
1月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
18 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
1月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
39 4
|
1月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
16 0
|
1月前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
1月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
|
3月前
|
搜索推荐 Java
经典排序算法---冒泡排序
这篇文章详细介绍了冒泡排序算法的基本思想、比较轮数和次数,并提供了Java语言实现冒泡排序的代码示例,展示了如何通过相邻元素的比较和交换来达到排序的目的。
经典排序算法---冒泡排序
|
4月前
|
算法 PHP
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
【php经典算法】冒泡排序,冒泡排序原理,冒泡排序执行逻辑,执行过程,执行结果 代码
34 1
|
5月前
|
算法 PHP 数据中心
基于php雪花算法工具类Snowflake -来自chatGPT
基于php雪花算法工具类Snowflake -来自chatGPT
113 2
|
5月前
|
机器学习/深度学习 算法 搜索推荐
数据结构算法--2 冒泡排序,选择排序,插入排序
**基础排序算法包括冒泡排序、选择排序和插入排序。冒泡排序通过相邻元素比较交换,逐步将最大值“冒”到末尾,平均时间复杂度为O(n^2)。选择排序每次找到剩余部分的最小值与未排序部分的第一个元素交换,同样具有O(n^2)的时间复杂度。插入排序则类似玩牌,将新元素插入到已排序部分的正确位置,也是O(n^2)复杂度。这些算法适用于小规模或部分有序的数据。**
下一篇
无影云桌面