php版
BUBBLESORT(A) for i <- 1 to length[A] do for j <- length[A] downto i + 1 do if A[j]<A[j - 1] then exchange A[j] <-> A[j-1]
<?php /* * point one: remember swap variable * point two: remember inside loop size */ $arr = array(2,1,4,2,7); //init a array variable $result = bubbling_ort($arr); //invoke a function and get result echo '<pre>'; //output format print_r($result); //output result echo '</pre>'; function bubbling_sort($arr){ //function start $size = count($arr)-1; //need to loop size is total length - 1 for ($i = 0; $i < $size; $i++) { //outside loop for ($j = 0; $j < $size-$i; $j++) { //inside loop if ($arr[$j] < $arr[$j+1]) { //compare big or small $temp = $arr[$j]; //start swap $arr[$j] = $arr[$j+1]; $arr[$j+1] = $temp; } } } return $arr; } ?>
<?php /* * point one: remember swap variable * point two: remember inside loop size */ $arr = array(2,1,4,2,7); //init a array variable $result = bubbling_sort($arr); //invoke a function and get result echo '<pre>'; //output format print_r($result); //output result echo '</pre>'; function bubbling_sort($arr){ //function start $size = count($arr)-1; //need to loop size is total length - 1 for ($i = 0; $i < $size; $i++) { //outside loop for ($j = 0; $j < $size-$i; $j++) { //inside loop if ($arr[$j] < $arr[$j+1]) { //compare big or small //swap two number without temp variable $arr[$j] = $arr[$j+1] + $arr[$j]; $arr[$j+1] = $arr[$j] - $arr[$j+1]; $arr[$j] = $arr[$j] - $arr[$j+1]; } } } return $arr; } ?>
<?php function quickSort($arr) { $len = count($arr); if($len <= 1) { return $arr; } $key = $arr[0]; $left_arr = array(); $right_arr = array(); for($i=1; $i<$len; $i++) { if($arr[$i] <= $key) { $left_arr[] = $arr[$i]; } else { $right_arr[] = $arr[$i]; } } $left_arr = quickSort($left_arr); $right_arr = quickSort($right_arr); return array_merge($left_arr, array($key), $right_arr); } $arr = array(49,38,65,97,76,13,27); echo '<pre>'; print_r(quickSort($arr)); echo '</pre>'; ?>
<?php function quick_sort($arr) { _quick_sort($arr,0,(count($arr)-1)); return $arr; } function _quick_sort(&$arr,$i,$j) { $pivot = $arr[$i]; $_i = $i; $_j = $j; while($i<$j) { while($arr[$j]>=$pivot && $i<$j) $j--; if($i<$j) { $arr[$i] = $arr[$j]; $i++; } while($arr[$i]<=$pivot && $i<$j) $i++; if($i<$j) { $arr[$j] = $arr[$i]; $j--; } } $arr[$i]=$pivot; if($_i<$i-1) { _quick_sort($arr,$_i,$i-1); } if($_j>$i+1) { _quick_sort($arr,$i+1,$_j); } } $just = array(49,38,97,76,13,27); print_r( quick_sort($just) );
<?php function selection_sort($array){ $count = count($array); for ($i=0;$i<$count-1;$i++){ /* find the minest */ $min = $i; for ($j=$i+1;$j<$count;$j++){ //由小到大排列 if ($array[$min]>$array[$j]) { //表明当前最小的还比当前的元素大 $min = $j;//赋值新的最小的 } } /* swap $array[$i] and $array[$min] 即将当前内循环的最小元素放在$i位置上*/ $temp = $array[$min]; $array[$min] = $array[$i]; $array[$i] = $temp; } return $array; } $old_array = array(3,4,1,6,5,2); $new_array = selection_sort($old_array); echo '<pre>'; print_r($new_array); echo '</pre>'; ?>