6.5.9 PHP中的冒泡(起泡)排序算法

6.5.9 PHP中的冒泡(起泡)排序算法

起泡法排序

插入排序、选择排序、冒泡排序,时间复杂度相似,所以全学实际意义不大,在实际测试中,我对3000个数组元素进行,这三种排序算法都需要花费80秒左右,而快速排序只需要8秒(10倍)

用起泡法对6个数排序(由小到大)。
起泡法的思路是:
将相邻两个数比较,将小的调到前头。

01.jpg

若有6个数:9-8-5-4-2-0第一次将8和9对调,第二次将第2和第3个数(9和5)对调……如此共进行5次,得到8-5-4-2-0-9的顺序,可以看到:最大的数9已“沉底”,成为最下面一个数,而小的数“上升”。最小的数0已向上“浮起”一个位置。经第一趟(共5次)后,已得到最大的数。然后进行第二趟比较,对余下的前面5个数按上法进行比较,经过4次比较,得到次大的数8。

02.jpg
03.jpg

如此进行下去。可以推知,对6个数要比较5趟,才能使6个数按大小顺序排列。在第一趟中要进行两个数之间的比较共5次,在第二趟中比4次……第5趟比1次。

如何获取最大值和最小值?

04.png

例test.php

<?php
    $arr = array(0,1,22,3,44,5,6,7,88,9);
    //从大到小
function mysort(&$arr) {    
    $len = count($arr);
    for($i=0; $i<$len-1; $i++) {
        for($j = 0; $j < $len-$i-1; $j++) {
            if($arr[$j] > $arr[$j+1]) {
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
}
mysort($arr);
print_r($arr);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,612评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,125评论 0 15
  • 排序的基本概念 在计算机程序开发过程中,经常需要一组数据元素(或记录)按某个关键字进行排序,排序完成的序列可用于快...
    Jack921阅读 5,382评论 1 4
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的...
    Luc_阅读 6,831评论 0 35
  • UIScrollView默认手势有:PagingSwipeGestureRecognizer、DelayedTou...
    芝麻绿豆阅读 14,019评论 1 27

友情链接更多精彩内容