八大基本演算法思想及實現 php實現

2021-10-03 15:26:12 字數 3538 閱讀 6604

快遞排序

歸併排序

查詢排序

遞推演算法

<?php

//遞迴$f[

1]=1

;$f[2

]=1;

$des=15

;for($i

=3;$i

<=

$des;$i

++)//檢視

echo'';

print_r($f

);?>

遞迴演算法
<?php

//遞迴思想

//遞迴一定要有函式

function

recursion($n

)echo

recursion(15

)?>

氣泡排序
<?php

//氣泡排序

$arr

=array(1

,4,2

,9,7

,5,8

);for($i=

0;$i<

count

($arr);

$i++)}

}echo"";

print_r

($arr);

?>

選擇排序
<?php

$arr

=array(1

,5,2

,9,6

,3,4

);$len

=count

($arr);

for($i=

0;$i<

$len;$i

++)}if

($min

!=$i)}

echo"";

print_r

($arr);

?>

插入排序
<?php

//插入排序

$arr

=array(4

,2,6

,8,9

,5);

$len

=count

($arr);

//1.確定要插入多少回(假設乙個陣列一次性插入到對的位置,同時對乙個位置假設是對的)

for($i=

1;$i<

$len;$i

++)else}}

echo'';

print_r

($arr);

?>

優化
//優化**

<?php

//插入排序

$arr

=array(4

,2,6

,8,9

,5);

$len

=count

($arr);

//1.確定要插入多少回(假設乙個陣列一次性插入到對的位置,同時對乙個位置假設是對的)

for($i=

1;$i<

$len;$i

++)else

}//判斷位置需要變動if(

$change)}

echo'';

print_r

($arr);

?>

快遞排序
<?php

//快速排序

$arr

=array(1

,6,3

,4,9

,2,7

,8);

function

quicksort

($arr

)else

}//$left和$right陣列元素沒有排好序:遞迴點

$left

=quicksort

($left);

$right

=quicksort

($right);

return

array_merge

($left,(

array

)$arr[0

],$right);

}echo'';

print_r

(quicksort

($arr))

;?>

歸併排序

二路歸併

<?php

//php陣列排序演算法:合併演算法

//二路歸併

$arr1

=array(1

,3,5

);$arr2

=array(2

,4,6

);//取出乙個空陣列用於歸併空間

$arr3

=array()

;while

(count

($arr1)&&

count

($arr2))

//合併結果

echo"";

print_r

(array_merge

($arr3

,$arr1

,$arr2))

;?>

實現
<?php

$arr

=array(4

,7,2

,1,5

,9,3

);//歸併排序函式

function

mergesort

($arr

)//返回結果

return

array_merge($m

,$left

,$right);

}echo'';

print_r

(mergesort

($arr))

;?>

查詢排序

順序查詢

<?php

//查詢演算法

//順序查詢

$arr

=array(1

,3,6

,8,23

,68,100);

//順序查詢:從陣列第乙個元素開始,挨個匹配

function

checkorder

($arr

,$num)}

return

false;}

var_dump

(checkorder

($arr,5

));?>

二分查詢
<?php

//二分查詢演算法

$arr

=array(1

,3,6

,8,23

,68,100);

$res

=100

;function

checkorder1

($arr

,$res

)//5.沒有找到if(

$arr

[$middle

]<

$res

)else

}return

false;}

var_dump

(checkorder1

($arr

,$res))

;?>

八大演算法思想

下面介紹一下最常用的八大演算法思想 一 比較 笨 的列舉演算法 基本思路 1 確定列舉物件 列舉範圍和判定條件 2 注意列舉可能的解,驗證每個節是否是問題的解 列舉演算法步驟 1 題解的可能範圍,補能遺漏任何乙個真正解,也要避免有重複 2 判斷是否真正解的方法 3 使可能解的範圍降至最小,以便提高解...

PHP實現八大演算法

交換函式 注意要按引用傳遞,否則無法真正交換兩個數的值 function exchange a,b 1 直接插入演算法 第一種實現 function insert sort arr return arr 第二種實現 function insert sort arr j return arr 2 希爾...

八大排序演算法思想介紹

1.插入排序 直接插入排序 希爾排序 2.選擇排序 簡單選擇排序 堆排序 3.交換排序 氣泡排序 快速排序 4.歸併排序 5.基數排序 不穩定排序 簡單選擇排序,快速排序,希爾排序,堆排序 穩定排序 氣泡排序,直接插入排序,歸併排序,奇數排序 一.插入排序 將第乙個和第二個元素排好序,然後將第3個元...