冒泡排序
原理:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
# 取出数组最大的元素 function getMax( $arr ){ if( !is_array($arr) ){ exit('参数必须是数组'); } if( count( $arr ) == 0 ){ exit('数组不能为空'); } if( count( $arr ) == 1 ){ return array_shift( $arr ); } $max = 0; foreach( $arr as $key => $value ){ if( $max < $value ){ $max = $value; } } return $max; } # 取出第二大的元素 function getTwoMax( $arr ){ if( !is_array($arr) ){ exit('参数必须是数组'); } if( count( $arr ) == 0 ){ exit('数组不能为空'); } if( count( $arr ) == 1 ){ return $arr ; } $max = 0; $two = 0; foreach( $arr as $key => $value ){ if( $max < $value ){ $two = $max; $max = $value; }else{ if( $max != $value ){ if( $two < $value ){ $two = $value; } } } } return [ 'max' => $max , 'twoMax' => $two ]; } //$arr = [ ]; //$arr = array_pad( $arr , 81 , 0 ); $arr = [ 99,1000,1000 ,1,10,5,25,80,35,70,27,999,25,25 ];
//冒泡排序 function BubbleSort($arr){ //获取数组总长 $count=count($arr); for($i=0;$i<$count;$i++){ for($j=0;$j<$count-1;$j++){ if( $arr[$j+1] < $arr[$j] ){ $temp = $arr[$j+1]; $arr[$j+1] = $arr[$j]; $arr[$j] = $temp; } } } return $arr; }