php演算法實現(一)

2021-09-13 20:03:03 字數 2075 閱讀 3724

記錄所有演算法相關知識。寫演算法時,可以先寫test case,這樣比較容易把握和思考。

以下演算法都可以直接跑。

1.冒泡演算法

<?php

$arr = [2,1,4,3,8,9,7,6,5];

print_r(bubblesort($arr));

function bubblesort($arr) }}

return $arr;

}

2.快速排序。簡單思路,隨機挑選乙個陣列中的值,以它為標準,小於他的放在她的左邊,大於他的放在他的右邊。之後遞迴,最後所有的值都會排列好。

<?php

$arr = [8,7,6,5,4,0, -1, -3,3,2,1];

print_r(quicksort($arr));

function quicksort($arr)

else }}

$left = quicksort($left);

$right = quicksort($right);

return array_merge($left, [$reference], $right);

}

3.從兩個陣列中找出相同的數

<?php

$arr1 = [5,4,3,2,1];

$arr2 = [4,5,6,7,8];

print_r(uniquenumber($arr1, $arr2));

function uniquenumber($arr1, $arr2)

else if ($arr1[$index1] > $arr2[$index2]) else

}return array_unique($container);

}

4.重寫shuffle函式,打亂乙個陣列

<?php

$arr = [2,3,4,5,6,7,8,9];

print_r(shufflerewrite($arr));

//這邊不能用shuffle,因為是內建函式。

function shufflerewrite($arr)

return $arr;

}

5.分離字母和數字。乙個string中有字母數字,分離並用:分割

<?php

$numalpha = "abc123dfg4jkl567ddd";

print_r(numalphasplit($numalpha));

function numalphasplit($numalpha)

array_shift($roundtable);

}return $roundtable[0];

}

7.二分法

<?php

$arr = [1,3,5,7,9,11,13];

echo binarysearch($arr, 11);

function binarysearch($arr, $index)

else if ($arr[$mid] < $index) else

}return -1;

}

8.找出一組數中連續的最大和

<?php

$arr = [-4, -2, 4, -3, 6, -2, 9, -3];

echo maxsum($arr);

function maxsum($arr)

else

}return $maxsum;

}

9.3sum. 排序好的數列,複雜度n^2。如果沒有排列好,可以先用sort

<?php

$arr = [-8,-7,-6,-4,-2,0,1,2,3,4,5,6,7];

print_r(sum3($arr));

function sum3($arr)

else if ($sum > 0) else }}

return $result;

}

php實現演算法

二分法查詢 已排序 params arr 查詢的陣列 start 開始查詢的下標 end 結束查詢的下標 value 查詢的值 function bin search arr,start,end,value else if arr mid value else return 1 快速排序 原理 選擇...

php AES演算法php實現

上次介紹了aes演算法的原理,原理完了肯定就是實現了。其實這個裡面有許多 是都是別人的原始碼,不過拿到手的時候裡面有機個小錯誤,自己就改了改錯。其實在了解演算法的基礎上,寫起來還是比較簡單的。以下就是 了。class aes state self subbytes state,nb state se...

PHP實現DFA演算法

最近專案需要用到敏感詞過濾功能,最開始想的是使用正則匹配和mysql儲存敏感詞來對敏感詞來進行過濾操作,但是這兩種方法都感覺不好。大家都知道正則效能問題一直都是乙個很大的問題,而使用mysql的話雖然可以實現,但是給資料庫增加了額外的壓力。後面經過google了解到dfa 有窮自動機 演算法可以解決...