PHP four basic sorting algorithm examples, four algorithm examples
Many people say that the algorithm is the core of the program, the quality of the algorithm determines the program. As a primary phper, although it is seldom exposed to algorithmic aspects of things. However, the basic sorting algorithm should be mastered, it is a necessary tool for program development. Here we introduce bubble sort, insert sort, choose Sort, quick sort four basic algorithms, analyze the idea of algorithm.
Premise: The bubble sorting method, the fast sorting method, the selection of sorting method, the insertion of the sorting method in the following array of values in order from small to large orders.
$arr (1,43,54,62,21,66,32,78,36,76,39);
1. Bubble sort
Thinking Analysis: In order to sort a group of numbers, the current is not well-arranged sequence, from the back to the adjacent two numbers in turn to compare and adjust, so that the larger number to sink, smaller upward. That is, each time a comparison of two adjacent numbers finds that they are ordered in the opposite order as they are ordered, they are interchanged.
Code implementation:
$arr =array (1,43,54,62,21,66,32,78,36,76,39); function Bubblesort ($arr) { $len =count ($arr);//The layer loop controls the number of rounds that need to be bubbled for ($i =1; $i < $len; $i + +) {//This layer loop is used to control the number of bursts per round Number of times to compare for ($k =0; $k < $len-$i; $k + +) { if ($arr [$k]> $arr [$k +1]) { $tmp = $arr [$k +1]; $arr [$k +1]= $arr [$k]; $arr [$k]= $tmp; } }} return $arr;}
2. Select sort
Thinking analysis: In the group of numbers to be sorted, select the smallest number to exchange with the number of the first position. Then in the remaining number, find the smallest and second position of the number of exchanges, so loop to the penultimate number and the last number comparison.
Code implementation:
function Selectsort ($arr) {//double loop complete, outer control wheel count, inner control comparison count $len =count ($arr); for ($i =0; $i < $len-1; $i + +) {//First assuming minimum value position $p = $ I for ($j = $i +1; $j < $len; $j + +) { //$arr [$p] is the currently known minimum value if ($arr [$p] > $arr [$j]) { //compare, find smaller, record the position of the minimum value , and the comparison is made at the next comparison with a known minimum value. $p = $j; } }//The position of the current minimum value has been determined and saved to $p. If the location of the minimum value is found to be different from the current assumed position $i, the position is interchangeable. if ($p! = $i) { $tmp = $arr [$p]; $arr [$p] = $arr [$i]; $arr [$i] = $tmp; }}//Return the final result return $arr;}
3. Insert Sort
Thinking Analysis: In order to sort a group of numbers, assuming that the previous number is already in the sequence, now the nth number is inserted into the ordinal number in front, so that the number of n is also in order. This cycle is repeated until all the rows are in order.
Code implementation:
function Insertsort ($arr) {$len =count ($arr); For ($i =1, $i < $len; $i + +) {$tmp = $arr [$i];//inner loop control, compare and insert for ($j = $i-1; $j >=0; $j-) { if ($tmp < $arr [$j]) {
//found the inserted element to be small, swap the position, the back element and the previous element interchange $arr [$j +1] = $arr [$j]; $arr [$j] = $tmp; } else { //If you encounter an element that does not need to be moved, because the array is already sorted, the preceding one does not need to be compared again. Break ; } }} return $arr;}
4. Quick Sort
Thinking Analysis: Select a datum element, usually select the first element or the last element. With a scan, the pending sequence is divided into two parts, some smaller than the Datum element, and a portion greater than or equal to the datum element. At this point the datum element is in the correct position after it is ordered, and then the same method is used to sort the two parts recursively.
Code implementation:
function QuickSort ($arr) {//First determine if the need to proceed $length = count ($arr), if ($length <= 1) {return $arr;}//Select the first element as the base $base _n um = $arr [0]; Iterate through all elements except the ruler, put in two arrays by size relationship//Initialize two arrays $left _array = Array (); $right _array = array () less than the baseline; For ($i =1, $i < $length, $i + +) {if ($base _num > $arr [$i]) { //put in left array $left _array[] = $arr [$i];} else { //Put right $right _array[] = $arr [$i];}} This function is then recursively called on the left and right arrays with the same sorting method $left _array = Quick_sort ($left _array); $right _array = Quick_sort ($right _array); Merge return Array_merge ($left _array, Array ($base _num), $right _array);}
http://www.bkjia.com/PHPjc/981346.html www.bkjia.com true http://www.bkjia.com/PHPjc/981346.html techarticle php four basic sorting algorithm examples, four algorithm examples many people say that the algorithm is the core of the program, the quality of the algorithm determines the program. As a primary phper, though seldom touched ...