php递归实现冒泡排序,PHP冒泡排序、快速排序算法
快速排序是對冒泡排序的一種改進。他的基本思想是:通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分的關鍵字均比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續(xù)進行快速排序,整個排序過程可以遞歸進行,以達到整個序列有序的目的。相信你真正理解這兩個排序算法后,在以后的數(shù)組排序中都是迎刃有余。<?php
$arr?=?array(3,2,4,5,1,8,7,6,9);
quick_sort($arr);
bubble_sort($arr);
function?bubble_sort($arr){
$num=count($arr);
for?($i=0;?$i?
for?($j=0;?$j?
if($arr[$j]>$arr[$j+1]){
$temp=$arr[$j+1];
$arr[$j+1]=$arr[$j];
$arr[$j]=$temp;
}
}
}
return?$arr;
}
function?quick_sort($arr)?{
//先判斷是否需要繼續(xù)進行
$length?=?count($arr);
if($length?<=?1)?{
return?$arr;
}
//如果沒有返回,說明數(shù)組內(nèi)的元素個數(shù)?多余1個,需要排序
//選擇一個標尺
//選擇第一個元素
$base_num?=?$arr[0];
//遍歷?除了標尺外的所有元素,按照大小關系放入兩個數(shù)組內(nèi)
//初始化兩個數(shù)組
$left_array?=?array();//小于標尺的
$right_array?=?array();//大于標尺的
for($i=1;?$i
if($base_num?>?$arr[$i])?{
//放入左邊數(shù)組
$left_array[]?=?$arr[$i];
}?else?{
//放入右邊
$right_array[]?=?$arr[$i];
}
}
//再分別對?左邊?和?右邊的數(shù)組進行相同的排序處理方式
//遞歸調(diào)用這個函數(shù),并記錄結果
$left_array?=?quick_sort($left_array);
$right_array?=?quick_sort($right_array);
//合并左邊?標尺?右邊
return?array_merge($left_array,?array($base_num),?$right_array);
}
總結
以上是生活随笔為你收集整理的php递归实现冒泡排序,PHP冒泡排序、快速排序算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工蜂群算法python_教程 | 用人
- 下一篇: 序列每天从0开始_【算法打卡】分割数组为