PHPの基本アルゴリズム

WBOY
リリース: 2016-06-23 14:29:59
オリジナル
1132 人が閲覧しました

/*

1. まず、多くの人が C を学習していたときに本で楽しく描いたことがあるでしょう。PHP でその半分を描いてみましょう。

アイデア: 行数ごとに 1 回、その後、内部のスペースとアスタリスクに対して 1 回。

*/
for($i=0;$i<=3;$i++){
for($j=0;$j<=3-$i;$j++){
echo ' ';
}
for($k=0;$k<=2*$i;$k++){
echo '*' }
echo '
';
2. C の基本アルゴリズムであるバブル ソートは、一連の数値を小さいものから大きいものへと並べ替えます。

考え方: この質問は最小から最大の順に行われます。最初のラウンドが最も小さく、2 番目のラウンドが 2 番目に小さく、3 番目のラウンドが 3 番目に小さいというようになります...

*/

$arr = 配列(3, 2, 1);
$n = count($arr);

//ループするたびに、後続のソートを実行します
for($j=0; $j/ /最後にソートされなかったものについては、ループして最大(最小)のものを見つけ、ソート処理を実行します
for($i=$j; $i<$n-1; $i++) {
if($ arr [$ j]&gt; $ arr [$ i+1]){
= $ t;


アイデア: 各行の最初と最後の桁は 1 で、中央は最初の桁と左の行の合計です。このアルゴリズムは 2 次元配列に保存されます。次元配列を使用する実装も可能で、出力は行ごとに行われます。興味がある場合は、それを書いて遊んでみてください。

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1

*/

//各行の最初と最後 両方とも1の場合は6と書きます行
for($i=0; $i<6; $i++) {
$a[$i][0]=1;
$a[$i][$i]=1;
}

/ /最初と最後の値を抽出して配列に保存
for($i=2; $i<6; $i++) {
for($j=1; $j<$i; $j++) {
$a[$i][$j] = $a[$i-1][$j-1]+$a[$i-1][$j];
//
を印刷 ($i= 0; $i<6; $i++){

for($j=0; $j<=$i; $j++) {

echo $a[$i][$j ].' ';
}
echo '
';
}
/*
4. 数値のセットでは、数値を挿入し、元の順序で挿入し、元の並べ替え方法を維持する必要があります。

アイデア: 挿入する数値より大きい位置を見つけて置き換え、次の数値を 1 つ戻します。

*/

$in = 2;
$arr = array(1,1,1,3,5,7);
$n = count($arr);
//挿入する数値が最大の場合は直接出力
if ($arr[$n-1] < $in) {
$arr[$n+1] = $in; print_r($arr);
}

for($i=0; $i< $n ; $i++) {
//挿入する位置を見つける
if($arr[$i] >= $in){
$t1= $arr[$i];
$arr[$i] = $ in;
//次のデータを 1 桁シフトします
[$j] = $t1;
$t1 = $t2; アルゴリズム)。

アイデア: 1 回の並べ替えで 2 つの部分に分割し、次に 2 つの部分を再帰的に並べ替えて、最後に結合します。

*/
function q($array) {
if (count($array) <= 1) {return $array;}
//$keyを境界として、2つの部分配列に分割します
$ key = $array [0];
$l = array();
$r = array();

//それぞれ再帰的ソートを行った後、配列
を合成します($i=1; $i< count($array); $i++) {
if ($array[$i] <= $key) { $l[] = $array[$i] }
else { $r[] = $array[ $i]; }
}
$l = q($l);
$r = q($r);
return array_merge($l, array($key), $r);
}

$arr = array(1,2 ,44,3,4,33);
print_r( q($arr) );

/*
6. 配列内で必要な要素を見つけます (二分探索アルゴリズム)。

アイデア: 配列内の特定の値を境界として使用し、最後まで再帰的に検索します。
*/
function find($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($ 配列 [$ ミッド] == $ k) {
リターン $ MID
} elseif ($ k & lt; $ 配列 [$ ミッド]) {
リターン 検索 ($ 配列, $ ロー, $ ミッド 1, $、$、k);
, $array = array(2,4,3,5);
$n = count($array) ;
$r = find($array,0,$n,
/*
7. 複数の配列を結合します。array_merge() は必要ありません。質問はフォーラムからのものです。

アイデア: 各配列を走査し、新しい配列を再編成します

*/
function t(){
$c = func_num_args()- 1;
$a = func_get_args( );
//print_r($a);
for($i=0; $i<=$c; $i++){
if(is_array($a[$i]) ){
for($j= 0; $j '
';
$a = array_merge(range(1) ,4),range(1,4),range(1,4));
print_r($a);
/*
8、 丑年に牛を頼む:多産になる牛がいます4歳になると毎年1頭の牛が生まれ、その子孫はすべて同じ牛になります。15歳になると不妊手術を受け、20歳になると死亡します。 n年? (フォーラムより)/*/
Function T ($ n) {
static $ num = 1
for ($ j = 1; $ j & lt; = $ n; $ j ++) {
if ($ j & gt; = 4 && $j If($j==20){$num--;}
}
return $num;
}

//テスト
echo t(8);



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート