PHP算法之冒泡算法

BUG员 132 2020-02-24

冒泡算法:

  原理:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

  这个算法的名字由来是因为数组中越大的元素会由于一次次排序后逐渐“沉”到数组的后面,而越小的元素会逐渐“浮”到数组的前面,故名。

  如果不懂的话,请看一下该工具,http://tools.jb51.net/aideddesign/paixu_ys

  请看代码:

交换代码:

/**
 * @param array $arr
 * @param $front [原来的位置]
 * @param $after [第二个位置]
 * 交换数组的方法
 */
function exchange(array &$arr,$front,$after){
    $temp=$arr[$after];//将要被替换的数值先保存
    $arr[$after]=$arr[$front];//替换掉数值
    $arr[$front]=$temp; //将替换第一个数值的数替换成第一个数
}

实施代码:

/**
 * 冒泡排序
 */
public function bubbling()
{
    //定义随机数组
    $arr=[1,9,10,15,33,55,99,100,54,65,71,82,95,33,6597664,55556,411,41];
    //验证冒泡
    $length=count($arr);//获取数组长度
    //定义循环的次数
    for ($i=0;$i<$length-1;$i++){
        //从后往前逐层上浮小的元素
        //从后面开始往前比较 如果后一个数大于前一个数就进行替换
        for ($j=$length-2;$j>=$i;$j --){
            //两两相比
            if($arr[$j]>$arr[$j+1]){
                $this->exchange($arr,$j,$j+1);
            }
        }
    }
    var_dump($arr);
}


上一篇:PHP利用wkhtmltopdf操作
下一篇:PHP算法之快排算法
相关文章

 发表评论

暂时没有评论,来抢沙发吧~