<?php
$un_sort_array=array();
for($i=0;$i
<20;$i++)
//用於二分查詢
$need_value = end($un_sort_array);
/* 插入排序
【基本思想】:每次將乙個待排序的資料元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序;直到待排序資料元素全部插入完為止。
【示例】: [初始關鍵字]
[49] 38 65 97 76 13 27 49
j=2(38) [38 49] 65 97 76 13 27 49
j=3(65) [38 49 65] 97 76 13 27 49
j=4(97) [38 49 65 97] 76 13 27 49
j=5(76) [38 49 65 76 97] 13 27 49
j=6(13) [13 38 49 65 76 97] 27 49
j=7(27) [13 27 38 49 65 76 97] 49
j=8(49) [13 27 38 49 49 65 76 97]
*/function insert($un_sort_array)
$un_sort_array[$j+1]= $value;
}return
$un_sort_array;}/*
【選擇排序(一維陣列)】【基本思想】:每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。【示例】:
[初始關鍵字] [49 38 65 97 76 13 27 49]
第一趟排序後 13 [38 65 97 76 49 27 49]
第二趟排序後 13 27 [65 97 76 49 38 49]
第三趟排序後 13 27 38 [97 76 49 65 49]
第四趟排序後 13 27 38 49 [49 97 65 76]
第五趟排序後 13 27 38 49 49 [97 97 76]
第六趟排序後 13 27 38 49 49 76 [76 97]
第七趟排序後 13 27 38 49 49 76 76 [ 97]
最後排序結果 13 27 38 49 49 76 76 97 */
function select_sort($un_sort_array)
}$un_sort_array[$min_index] = $value;
}return
$un_sort_array;
}//select_sort($un_sort_array);
/*【氣泡排序】【基本思想】:兩兩比較待排序資料元素的大小,發現兩個資料元素的次序相反時即進行交換,直到沒有反序的資料元素為止。【排序過程】:設想被排序的陣列r[1..n]垂直豎立,將每個資料元素看作有重量的氣泡,根據輕氣泡不能在重氣泡之下的原則,從下往上掃瞄陣列r,凡掃瞄到違反本原則的輕氣泡,就使其向上"漂浮",如此反覆進行,直至最後任何兩個氣泡都是輕者在上,重者在下為止。*/
function ball_sort($un_sort_array)}}
return
$un_sort_array;
}//print_r(ball_sort($un_sort_array));
/*【快速排序(一維陣列)】【基本思想】:在當前無序區r[1..h]中任取乙個資料元素作為比較的"基準"(不妨記為x),用此基準將當前無序區劃分為左右兩個較小的無序區:r[1..i-1]和r[i 1..h],且左邊的無序子區中資料元素均小於等於基準元素,右邊的無序子區中資料元素均大於等於基準元素,而基準x則位於最終排序的位置上,即r[1..i-1]≤x.key≤r[i 1..h](1≤i≤h),當r[1..i-1]和r[i 1..h]均非空時,分別對它們進行上述的劃分過程,直至所有無序子區中的資料元素均已排序為止。
【示例】:
初始關鍵字 [49 38 65 97 76 13 27 49]
第一次交換後 [27 38 65 97 76 13 49 49]
第二次交換後 [27 38 49 97 76 13 65 49]
j向左掃瞄,位置不變,第三次交換後 [27 38 13 97 76 49 65 49]
i向右掃瞄,位置不變,第四次交換後 [27 38 13 49 76 97 65 49]
j向左掃瞄 [27 38 13 49 76 97 65 49](一次劃分過程)
初始關鍵字 [49 38 65 97 76 13 27 49]一趟排序之後 [27 38 13] 49 [76 97 65 49]
二趟排序之後 [13] 27 [38] 49 [49 65]76 [97]
三趟排序之後 13 27 38 49 49 [65]76 97
最後的排序結果 13 27 38 49 49 65 76 97 各趟排序之後的狀態 */
//$start 為開始索引,$end為結束索引
function quick_sort($un_sort_array,$start,$end)
$un_sort_array[$start] = $un_sort_array[$j];
$un_sort_array[$j] = $value;
if( ($j-1-$start) >0)
quick_sort($un_sort_array,$start,$j-1);
if( ($end-$j-1) >0 )
quick_sort($un_sort_array,$j+1,$end);
}quick_sort($un_sort_array,0,19);
//print_r($un_sort_array);
//利用一維陣列 遞迴二分查詢法
//將陣列$un_sort_array排序後,為公升序
function binary_seach($un_sort_array,$start,$end,$need_value)
if($need_value>$un_sort_array[$mid])
else
if($need_value
<$un_sort_array[$mid])
else
}//var_dump(binary_seach($un_sort_array,0,19,$need_value));
//二分查詢(遞迴消除)
function binary_seach_clean($un_sort_array,$start,$end, $need_value)
else }
return false;
} var_dump(binary_seach_clean($un_sort_array,0,19,$need_value));
最近辭職了 準備早點回家過年,待著實在無聊 就寫了一些原來資料結構的演算法的應用。
一些常用演算法實現
cstring newguid cstring getdatestr2 ctime t 獲取當前日期的字串 cstring getdatestr 判斷是否數字,這裡指不包含負號的數字 int isnum const cstring str if ch 0 ch 9 數字 continue retur...
常用的一些排序演算法(C 實現)
常用的排序演算法有氣泡排序,選擇排序,插入排序,歸併排序 希爾排序,堆排序等 1 冒泡 氣泡排序就是像旗袍一樣,最大的值逐漸上浮,我的實現方法是採用遞迴的,當然也可以不用遞迴 void bubblesort2 int array,int length if index length 1 bubble...
一些常用的php函式
這是一些使用頻率比較高的函式,有的來自別人的程式.1.產生隨機字串函式 function random length return hash 2.擷取一定長度的字串 注 該函式對gb2312使用有效 function wordscut string,length sss 0 for i 0 i le...