PHP 常用算法【总结】

一、声明数组

ini_set("max_execution_time", "12000");
$arr = [2,4,1,7,33,4,5,6,7,11,1,0,60,22,44,51,2,92,8,999];
$arr = array_rand((range(1,10000)),2000);
shuffle($arr);

二、算法

  1、冒泡排序

function bubbleSort($arr, $sort='asc'){
	
	$sort = strtolower($sort);
	if($sort!='asc' && $sort!='desc'){
		return false;
	}
	$arr = array_values($arr);
	$total = count($arr);
	$operator = ( $sort=='asc' ? '>' : '<' );

	for ($i=0; $i < $total; $i++) { 
		for ($j=0; $j < ($total-1-$i); $j++) { 
			$temp = $arr[$j];
			if( eval( 'return ($arr[$j] '.$operator.' $arr[$j+1]);' ) ){
				$arr[$j] = $arr[$j+1];
				$arr[$j+1] = $temp;
			}
		}
	}
	return $arr;
}

  

    2、快速排序

function fastSort( $arr, $sort='asc'){

	$length = count( $arr );
	if($length<2){
		return $arr;
	}
	$arr = array_values( $arr );
	$ruler = $arr[0];	  //标尺
	$left  = $right = []; //存标尺左右两边的数据
	for ($i=1; $i < $length; $i++) { 
		if( $arr[$i] > $ruler ){
			$left[] = $arr[$i]; 	
		}else{
			$right[] = $arr[$i]; 	
		}
	}
	//再分别对 左边 和 右边的数组进行相同的排序处理方式
	//递归调用这个函数,并记录结果
	$left = fastSort($left); 
	$right = fastSort($right);
	return array_merge( $left, array($ruler), $right) ;
}

  

        

持续更新中............

猜你喜欢

转载自www.cnblogs.com/jxkshu/p/9555909.html