1、插入排序基本思路:將陣列分為兩個區(已排序區和未排序區),假定陣列的第乙個元素處於已排序區, 第乙個元素之後的所有元素都處於未排序部分。排序時用到雙層迴圈,外層迴圈用於從未排序部分中取出待排序元素,並逐步縮小未排序部分,內層迴圈用於從已排序部分尋找插入位置(即不斷地從已排序部分尋找比待排序元素大的元素), 然後將較大的已排序區的元素後移,後移的最終結果是已排序區元素的最後乙個元素佔據待排序元素原來的位置,而已排序區中間空出乙個位置),最後將待排序元素插入元素後移之後留下的空位。
注意:將未排序區的元素依次與已排序區的元素做對比。
示例:[初始關鍵字] [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 insertionsort($arr)
else }}
return $arr;
}
2、選擇排序(一維陣列) 基本思想:將陣列分為兩個區(已排序區和未排序區),每一趟從待排序的資料元素中選出最小(或最大)的乙個元素,順序放在已排好序的數列的最後,直到全部待排序的資料元素排完。
示例:[初始關鍵字] [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 selectionsort($arr)
}$temp = $arr[$i];
$arr[$i] = $arr[$minindex];
$arr[$minindex] = $temp;
}return $arr;
}
3、氣泡排序(一維陣列) 基本思想:兩兩比較待排序資料元素的大小
function bubblesort($arr)}}
return $arr;
}
4、快速排序(一維陣列) 基本思想:
function quicksort($arr)
$leftarray = quicksort($leftarray);
$leftarray = $middle;
$rightarray = quicksort($rightarray);
return array_merge($leftarray, $rightarray);
}
5、約瑟夫環問題,猴子選大王
一群猴子排成一圈,按1,2,…,n依次編號。然後從第1只開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下乙隻猴子為止,那只猴子就叫做大王。要求程式設計模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程式模擬該過程。
function circle($n ,$m)
return $arr[$i-1]; //直至最後剩下乙個為大王
}print_r(circle(6,8)); //第3只為大王
PHP 四種基礎演算法
氣泡排序 思路 每次迴圈排列出乙個最大的數 選擇排序 思路 每一趟在n i 1 i 1,2,n 1 個記錄中選擇關鍵字最小的記錄作為有序序列中第i個記錄,其中最簡單的是簡單選擇排序,其過程如下 通過n i次關鍵字間的比較,從n i 1個記錄中選擇出關鍵字最小的記錄,並各第i個記錄交換之。插入排序 思...
php四種基礎演算法
php四種基礎演算法 冒泡,選擇,插入和快速排序法 許多人都說 演算法是程式的核心,乙個程式的好於差,關鍵是這個程式演算法的優劣。作為乙個初級phper,雖然很少接觸到演算法方面的東西 但是對於氣泡排序,插入排序,選擇排序,快速排序四種基本演算法,我想還是要掌握的。下面是我按自己的理解,將四個方法分...
php四種基礎排序演算法
氣泡排序法 function bubblesort array 選擇排序法 function selectsort array temp array i array i array minvalindex array minvalindex temp 插入排序法 function insertsor...