选择排序
选择排序主要是将假设数组中的第一个是最小的,循环与数组中的第一个进行比较 如果比其还小 则记录下标 进行数值交换 效率相对冒泡来说比较高
function selection_sort($array){ $count=count($array); for($i=0;$i<$count-1;$i++){ /*findtheminest*/ $min=$i; echo'$min-->'.$array[$min].'-->'; for($j=$i+1;$j<$count;$j++){ //由小到大排列 if($array[$min]>$array[$j]){ //表明当前最小的还比当前的元素大 $min=$j; //赋值新的最小的 } } echo$array[$min].'coco'; /*swap$array[$i]and$array[$min]即将当前内循环的最小元素放在$i位置上*/ if($min!=$i){ $temp=$array[$min]; $array[$min]=$array[$i]; $array[$i]=$temp; } } return$array;}
冒泡排序:
冒泡排序是将数组中的前后两个相领的数值进行比较 条件成立 则进行交换 效率比较低 因为其交换的次数也比较多
function bubbleSort($numbers) {$cnt = count($numbers);for ($i = 0; $i < $cnt; $i++) { for ($j = 0; $j < $cnt - $i - 1; $j++) { if ($numbers[$j] > $numbers[$j + 1]) { $temp = $numbers[$j]; $numbers[$j] = $numbers[$j + 1]; $numbers[$j + 1] = $temp; } }}return $numbers;
}
插入排序:
插入排序是将插入的数据保存在变量中,与数组中的每个数比较 找到合适的位置 进行插入 效率相对来说比较高
function insertSort($arr){ for($i=0;$i=0&&$insertVal<$arr[$insertIndex]) { $arr[$insertIndex+1]=$arr[$insertIndex]; $insertIndex--; } $arr[$insertIndex+1]=$insertVal; }}
快速插入:
快速排序由C. A. R.
Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。效率很高
function quick_sort($arr) { //判断参数是否是一个数组 if(!is_array($arr)) return false; //递归出口:数组长度为1,直接返回数组 $length=count($arr); if($length<=1) return $arr; //数组元素有多个,则定义两个空数组 $left=$right=array(); //使用for循环进行遍历,把第一个元素当做比较的对象 for($i=1;$i<$length;$i++) { //判断当前元素的大小 if($arr[$i]<$arr[0]){ $left[]=$arr[$i]; }else{ $right[]=$arr[$i]; } } //递归调用 $left=quick_sort($left); $right=quick_sort($right); //将所有的结果合并 return array_merge($left,array($arr[0]),$right); }