码迷,mamicode.com
首页 > 编程语言 > 详细

PHP实现四种排序

时间:2019-02-20 17:29:55      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:i++   比较大小   ret   temp   turn   算法   大小   fun   cti   

程序=算法+数据结构,作为一个PHP程序员,需要掌握一下。

/**
*    冒泡排序
*    按照两两比较大小,注意比较轮数和每轮比较次数;
*    假设数组有n个元素,则需要n-1轮比较;每i轮比较n-i次(即 第1轮中需要n-1次比较、第2轮中需要n-2次比较...第n-1轮中需要1次比较)
*/
function numSort($arr){
    $mnt = count($arr);
    if($mnt==1){
        return $arr;
    }
    for ($i=0; $i < $mnt-1; $i++) { 
        for ($j=0; $j < $mnt-1-$i; $j++) { 
            if($arr[$j]>$arr[$j+1]){
                $temp      = $arr[$j];
                $arr[$j]   = $arr[$j+1];
                $arr[$j+1] = $temp;
            }
        }
    }
    return $arr;
}
//测试
$arr = [5,2,1,1,3,1,4];
$end = numSort($arr);
echo "<pre>";
print_r($end);

过程分析:

第1轮:

第1次: Array ( [0] => 2 [1] => 5 [2] => 1 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第2次: Array ( [0] => 2 [1] => 1 [2] => 5 [3] => 1 [4] => 3 [5] => 1 [6] => 4 )
第3次: Array ( [0] => 2 [1] => 1 [2] => 1 [3] => 5 [4] => 3 [5] => 1 [6] => 4 )
第4次: Array ( [0] => 2 [1] => 1 [2] => 1 [3] => 3 [4] => 5 [5] => 1 [6] => 4 )
第5次: Array ( [0] => 2 [1] => 1 [2] => 1 [3] => 3 [4] => 1 [5] => 5 [6] => 4 )
第6次: Array ( [0] => 2 [1] => 1 [2] => 1 [3] => 3 [4] => 1 [5] => 4 [6] => 5 )

第2轮:

第1次: Array ( [0] => 1 [1] => 2 [2] => 1 [3] => 3 [4] => 1 [5] => 4 [6] => 5 )
第2次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => 4 [6] => 5 )
第3次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 3 [4] => 1 [5] => 4 [6] => 5 )
第4次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 4 [6] => 5 )
第5次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 4 [6] => 5 )

第3轮:

第1次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 4 [6] => 5 )
第2次: Array ( [0] => 1 [1] => 1 [2] => 2 [3] => 1 [4] => 3 [5] => 4 [6] => 5 )
第3次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )
第4次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

第4轮:

第1次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )
第2次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )
第3次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

第5轮:

第1次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )
第2次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

第6轮:

第1次: Array ( [0] => 1 [1] => 1 [2] => 1 [3] => 2 [4] => 3 [5] => 4 [6] => 5 )

结论:

假设数组有n个元素,则需要n-1轮比较;每i轮比较n-i次(即 第1轮中需要n-1次比较、第2轮中需要n-2次比较...第n-1轮中需要1次比较)

PHP实现四种排序

标签:i++   比较大小   ret   temp   turn   算法   大小   fun   cti   

原文地址:https://www.cnblogs.com/meetuj/p/10407684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!