当前位置: 首页 > 后端技术 > PHP

PHP排除方法

时间:2023-03-29 22:12:06 PHP

1.插入排序1).直接插入排序$arr=[16,19,10,17,8,13,6,7,5,12];$arr=insert_sort($arr);函数insert_sort($arr){$len=count($arr);对于($i=1;$i<$len;$i++){$tmp=$arr[$i];for($j=$i-1;$j>=0;$j--){if($tmp<$arr[$j]){$arr[$j+1]=$arr[$j];$arr[$j]=$tmp;}}}返回$arr;}2).希尔排序$arr=[16,19,10,17,8,13,6,7,5,12];$len=count($arr);for($increment=intval($len/2);$increment>0;$increment=intval($increment/2)){for($i=$increment;$i<$len;$i++){$tmp=$arr[$i];for($j=$i;$j>=$increment;$j-=$increment){if($tmp<$arr[$j-$increment]){$arr[$j]=$arr[$j-$增量];}else{休息;$arr[$j]=$tmp;}}2.交换排序1).冒泡排序$arr=[16,19,10,17,8,13,6,7,5,12];$len=count($arr);for($i=1;$i<$len;$i++){对于($j=0;$j<$len-$i;$j++){如果($arr[$j]>$arr[$j+1]){$x=$arr[$j+1];$arr[$j+1]=$arr[$j];$arr[$j]=$x;}}}2).快速排序$arr=[16,19,10,17,8,13,6,7,5,12];$arr=quick_sort($arr);functionquick_sort($arr){$len=count($arr);如果($len<=1){返回$arr;}$左=$右=[];for($i=1;$i<$len;$i++){如果($arr[$i]<$arr[0]){$left[]=$arr[$i];}else{$right[]=$arr[$i];}}$left=quick_sort($left);$right=quick_sort($right);returnarray_merge($left,array($arr[0]),$right);}3.选择顺序1).简单选择顺序$arr=[16,19,10,17,8,13,6,7,5,12];simplySelectSort($arr);函数simplySelectSort(&$arr){$len=count($arr);对于($i=0;$i<$len-1;$i++){$min=$i;对于($j=$i+1;$j<$len;$j++){如果($arr[$j]<$arr[$min]){$min=$j;}}如果($min!=$i){交换($arr,$min,$i);}}}函数交换(&$arr,$a,$b){$temp=$arr[$a];$arr[$a]=$arr[$b];$arr[$b]=$temp;}2).树形选择排序3).堆排序4.归并排序$arr=[16,19,10,17,8,13,6,7,5,12];$arr=mergeSort($arr);functionmergeSort($arr){if(count($arr)<=1){返回$arr;}$left=array_slice($arr,0,(int)(count($arr)/2));$right=array_slice($arr,(int)(count($arr)/2));$left=mergeSort($left);$right=mergeSort($right);$output=merge($left,$right);返回$output;}functionmerge($left,$right){$result=[];while(count($left)>0&&count($right)>0){if($left[0]<=$right[0]){array_push($result,array_shift($left));}else{array_push($result,array_shift($right));}}array_splice($result,count($result),0,$left);array_splice($result,count($result),0,$right);return$result;}5.分配顺序6.基数顺序