常見的演算法PHP 版,自整理

2022-09-13 17:51:10 字數 2771 閱讀 6415

1

<?php23

//二分查詢

4public

function bin_search($arr,$k,$low = 0,$high = 0)

8$mid = intval(($low + $high) / 2);9//

遞迴查詢

10if($low

<= $high)14

else

if($k > $arr[$mid

])17

else

if($k

< $arr[$mid

])20}21

return -1;22}

23//

順序查詢

24public

function seq_search($arr,$k

) 29}

30return -1;31}

32//

刪除元素

33public

function del_element($arr,$i)38

//彈出最後乙個元素

39array_pop($arr

);40

return

$arr;41

}42//氣泡排序

43public

function bubble_sort($arr = array

())48

foreach ($arr

as$k => $v

) 55}56

}57return

$arr;58

}5960//

快速排序

61public

function quick_sort($arr = array

())66

$mid = $arr[0];

67$left_arr = array

();68

$right_arr = array

();69

//判斷值大於標記位或小於標記位

70for($i = 1 ; $i

< $len ; $i++)else

7677}78

//遞迴陣列

79$left_arr = quick_sort($left_arr

);80

$right_arr = quick_sort($right_arr

);81

return

array_merge($left_arr,array($mid),$right_arr

);82}83

84//

插入排序

85public

function insert_sort($arr)95

}96return

$arr;97

}98//選擇排序

99public

function select_sort($arr

)113

}114

}115

return

$arr

;116

}117

118/*

*119

php堆排序實現原理

120php程式中關於堆的一些概念:

121假設n為當前陣列的key則

122n的父節點為 n>>1 或者 n/2(整除);

123n的左子節點l= n<<1 或 l=n*2,n的右子節點r=(n<<1)+1 或 r=l+1

124*/

125//

$arr=array(1,8,7,2,3,4,6,5,9);

126// /*

127// 陣列$arr的原形態結構如下:

128// 1

129// / \

130// 8 7

131// / \ / \

132// 2 3 4 6

133// / \

134// 5 9

135// */

136// heap_sort($arr);

137// print_r($arr);

138// /*

139// 排序後生成標準的小頂堆結構如下:

140// 1

141// / \

142// 2 3

143// / \ / \

144// 4 5 6 7

145// / \

146// 8 9

147// 既陣列:array(1,2,3,4,5,6,7,8,9)

148// */

149// }

150public

function heap_sort($arr

)else

172}

173array_shift($arr

);174

}175

176//

整理當前節點($n),臨界點$len之後為已排序的元素

177function adjustnode($n,$last,&$arr

)190

}191

192//

交換兩個值

193function swap(&$a,&$b

)194

常見PHP套件整理

對於已經熟悉apache php mysql的安裝配置的開發人員,或者是不想涉及開發而只是想建立php應用程式的人來說,使用apache php mysql安裝套件來配置php的web環境會方便不少,但是選擇合適的套件還是需要的。個人把曾經使用過的,以及比較知名的安裝套件總結如下 wamp 一直在用...

常見排序演算法整理

經常忘記簡單的排序演算法,有時間整理下來,便於隨時翻閱,也為了隨用隨取 插入排序演算法 取第乙個數作為有序佇列,從後面的無序佇列中依次取值,在有序佇列中從後向前比較大小,插入到有序佇列中。void insertsort int unsort,int n unsort j temp 選擇排序演算法 與...

常見演算法整理(二)

1 從300萬字串中找到最熱門的10條 搜尋的輸入資訊是乙個字串,統計300萬輸入資訊中的最熱門的前10條,我們每次輸入的乙個字串為不超過255byte,記憶體使用只有1g。請描述思想,寫出演算法 c語言 空間和時間複雜度。255位元組 300萬 7,5500,0000位元組 755,000k 75...