博客列表 >php实现排序之冒泡排序算法

php实现排序之冒泡排序算法

无意苦争春的博客
无意苦争春的博客原创
2017年08月17日 17:34:04858浏览

冒泡排序

     冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的排序码,若发现逆序则交换,使排序码较小的元素逐渐从后部移向前部(从下标较大的单元移向下标较小的单元),就象水底下的气泡一样逐渐向上冒。

144931kyfdv8vzdav3wzw5.jpg.thumb.jpg

/**
* 冒泡排序
*
* @param $arr, array 需要排序的数组
*
* @return array 排序好的数组
*/
function bubble_sort($arr) {
    //利用双重循环完成
    //外层循环控制 比较的轮数,每轮会将一个最大的气泡(数)浮到水面。
    //如果数组的元素个数为N 则需要N-1轮完成
    for($i=0, $len=count($arr); $i<$len-1; $i++) {
        //内层循环控制 的比较的次数,
        //第一轮需要比较 N-1次
        //第二轮需要比较 N-2次
        //比较次数由  $len-$i-1
        for($j=0; $j<$len-$i-1; $j++) {
            //比较相邻的两个元素,将大的元素放到后边
            // 相邻的下标使用 $j  和 $j+1 标志
            if($arr[$j] > $arr[$j+1]) {
                //判断 前面的比后边的大,需要交换位置
                $tmp = $arr[$j];
                $arr[$j] = $arr[$j+1];
                $arr[$j+1] = $tmp;
            }
        }
    }
    //返回比较后的数组
    return $arr;
}

//测试
$arr1 = array(1, 3, 0, 2, 6, 2);
print_r(bubble_sort($arr1));




声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议