氣泡排序:
<?php
/** * created by phpstorm.
* user: maguanya
* date: 2018/1/9
* time: 下午1:38
* 氣泡排序
*/function bubble($arr)
$len = count($arr);
if ($len <= 1)
for ($i=1; $i<$len; $i++) }}
return $arr;
}// 先定義乙個陣列
$arr = ['9', '2', '4', '1', '7', '3', '5', '8'];
$fun = bubble($arr);
var_dump($fun);
快速排序:
<?php
/** * created by phpstorm.
* user: maguanya
* date: 2018/1/11
* time: 下午2:23
* 快速排序
* 全部的數都和陣列的第乙個數作比較,比第乙個數字小的放到乙個空陣列裡面,比第乙個數字大的放到另乙個空陣列裡面,
* 因為都是和第乙個數字進行判斷的,所以是從陣列的下表為1的開始迴圈的,並且迴圈次數是陣列長度減1,
* 然後再進行遞迴呼叫自身,知道長度為1或0
*/function quick($arr)
$left = $right = ; //定義兩個空陣列
for ($i=1; $i<$len; $i++) else
}$left = quick($left);
$right = quick($right);
print_r($right);
return array_merge($left,array($arr[0]),$right);
}$arr = ['9', '2', '4', '1', '7', '3', '5', '8'];
$res = quick($arr);
var_dump($res);
選擇排序:
<?php
/** * created by phpstorm.
* user: maguanya
* date: 2018/1/12
* time: 下午2:08
* 選擇排序
* 外層的迴圈是陣列長度是幾就迴圈多少次,內層的迴圈是永遠比上一次的迴圈次數少一次,
* 排序規則:先拿陣列的第乙個元素依次作比較,迴圈出最大或最小的元素,
* 然後進行放到需要迴圈的這幾個元素的最後乙個位置,
* 所以放到最後的就不會做比較
*/function select($arr)}}
return $arr;
}$arr = ['9', '2', '4', '1', '7', '3', '5', '8'];
$res = select($arr);
var_dump($res);
折半查詢:
<?php
/** * created by phpstorm.
* user: maguanya
* date: 2018/1/12
* time: 下午2:43
* 折半查詢
* $arr:要查詢的陣列;$val:要查詢的值
*///遞迴方式
function bin_recur_search($arr,$val)elseif($arr[$mid] > $val)else
}return '未找到'.$val;
}//非遞迴方式
function bin_search($arr,$val)elseif($val > $arr[$mid])else}}
return '未找到'.$val;
}$arr = ['9', '2', '4', '1', '7', '3', '5', '8'];
echo '遞迴方式結果:'.'
'.bin_recur_search($arr, 2);
echo '
';echo '非遞迴方式結果:'.'
'.bin_search($arr, 2);
斐波那且數列:
<?php
/** * created by phpstorm.
* user: maguanya
* date: 2018/1/13
* time: 上午10:26
* 斐波那且數列
*///顯示陣列
function fib($n)
return $array;
}//顯示斐波那且數列中第$n個數的值
function fib_recursive($n)else
}var_dump(fib(10));
echo '
';echo fib_recursive(3);
五種常見的 PHP 設計模式
設計模式對於每個人都非常有用 本片博文 自 觀察者模式為您提供了避免元件之間緊密耦合的另一種方法。該模式非常簡單 乙個物件通過新增乙個方法 該方法允許另乙個物件,即 觀察者 註冊自己 使本身變得可觀察。當可觀察的物件更改時,它會將訊息傳送到已註冊的觀察者。這些觀察者使用該資訊執行的操作與可觀察的物件...
php 陣列合併 五種常見陣列排序演算法
氣泡排序演算法思路 比較相鄰的兩個陣列元素,如果第乙個比第二個大,則交換兩個的值 對每一對相鄰元素做同樣的工作,從開始第一對比較到最後一對,最後的元素應該是最大值 針對所有元素重複以上步驟,除了最後乙個 針對越來越少的元素重複以上步驟,直至沒有任何一對數字比較 實現 氣泡排序 arr array 4...
演算法 1 五種常見的演算法思想簡述
遞迴 遞迴演算法是把問題轉化為規模縮小了的同類問題的子問題。然後遞迴呼叫 函式 或過程 來表示問題的解。暴力 暴力求解就是根據問題的描述和定義直接求解,不使用特殊的演算法。動態規劃 動態規劃演算法通常用於求解具有某種最優性質的問題。在這類問題中,可能會有許多可行解。每乙個解都對應於乙個值,我們希望找...