【算法】php实现排序(一)
发布时间:2020-12-13 17:31:18 所属栏目:PHP教程 来源:网络整理
导读:? 选择排序 方式:先让第一位与其他位比较大小找到最小的数字,然后是第二位与除第一位的其他位比较大小找出第二位,依此类推 $arr = [2,45,12,67,33,5,23,132,46 ]; for ( $i =0; $i count ( $arr ); $i ++ ) { for ( $j = $i +1; $j count ( $arr ) ; $j +
? 选择排序 $arr = [2,45,12,67,33,5,23,132,46]; for ($i=0; $i < count($arr); $i++) { for ($j=$i+1; $j <count($arr) ; $j++) { if($arr[$i] > $arr[$j]){ $tmp = $arr[$i]; $arr[$i] = $arr[$j]; $arr[$j] = $tmp; } } } print_r($arr); ? 冒泡排序 $arr = [2,46]; $if_replace = false; for ($i=0; $i < count($arr); $i++) { for ($j=0; $j < count($arr)-1; $j++) { if($arr[$j] > $arr[$j+1]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j+1]; $arr[$j+1] = $tmp; $if_replace = true; } } if(!$if_replace){ break; } } print_r($arr); ? 插入排序 $arr = [2,46]; for ($i=0; $i < count($arr)-1; $i++) { for ($j=$i+1; $j > 0; $j--) { if($arr[$j] < $arr[$j-1]){ $tmp = $arr[$j]; $arr[$j] = $arr[$j-1]; $arr[$j-1] = $tmp; }else{ break; } } } print_r($arr); ? 希尔排序 $arr = [2,46]; $increment = count($arr); do{ $increment = floor($increment/3)+1; for ($i=0; $i < $increment; $i++) { $k = 0; $j = $i; do{ for ($m=$j+$increment; $m > 0; $m-=$increment) { if($arr[$m-$increment] > $arr[$m] && $arr[$m]){ $tmp = $arr[$m]; $arr[$m] = $arr[$m-$increment]; $arr[$m-$increment] = $tmp; }else{ break; } } $k++; $j = $i+($k*$increment); }while($j<count($arr)); } }while($increment > 1); print_r($arr); ??快速排序 方法:先从数列中取出一个数作为基准数,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边,依此操作直到各区间只有一个数 $arr = [33,24,8,21,2,3,32,16]; function quickSort($arr) { $count = count($arr); if ($count < 2) { return $arr; } $leftArray = $rightArray = array(); $middle = $arr[0];// 基准值 for ($i = 1; $i < $count; $i++) { // 小于基准值,存入左边;大于基准值,存入右边 if ($arr[$i] < $middle) { $leftArray[] = $arr[$i]; } else { $rightArray[] = $arr[$i]; } } $leftArray = quickSort($leftArray); $rightArray = quickSort($rightArray); return array_merge($leftArray,array($middle),$rightArray); } print_r(quickSort($arr)); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |