並べ替え:
- クイックソート
クイックソートは非常に一般的かつ効率的なアルゴリズムである、という考えは次のとおりです。最初のコホート全体が、その要素を確保するためにスクリーニングの上に行くためにそれを使用し、スケールを選択し、その左側より大きくありませんが、その要素の権利は小さなものではなく、
$arr = [234,3,14,2,45,12,4567,455,343];
public function quickSort($arr){
// 获取数组长度
$length = count($arr);
// 判断长度是否需要继续二分比较
if($length <= 1){
return $arr;
}
// 定义基准元素
$base = $arr[0];
// 定义两个空数组,用于存放和基准元素的比较后的结果
$left = [];
$right = [];
// 遍历数组
for ($i=1; $i < $length; $i++) {
// 和基准元素作比较
if ($arr[$i] > $base) {
$right[] = $arr[$i];
}else {
$left[] = $arr[$i];
}
}
// 然后递归分别处理left和right
$left = $this->quickSort($left);
$right = $this->quickSort($right);
// 合并
return array_merge($left,[$base],$right);
}
値を返します:[2,3,12,14,45,234,343,455,4567]
-
バブルソート
原理:隣接するデータのサイズを比較するデータのセット、のために、データ値が背面に大きなデータ値が、前面に小さいです。
$arr = [234,3,14,2,45,12,4567,455,343];
public function quickSort($arr){
// 获取数组长度
$length = count($arr);
// 第一层循环控制冒泡轮次
for ($i=0; $i < $length-1; $i++) {
// 内层循环控制从第0个键值和后一个键值比较,每次冒出一个最大的数
for ($k=0; $k < $length-1-$i; $k++) {
if($arr[$k] > $arr[$k+1]){
$tmp = $arr[$k+1];
$arr[$k+1] = $arr[$k];
$arr[$k] = $tmp;
}
}
}
return $arr;
}
値を返します:[2,3,12,14,45,234,343,455,4567]