PHP常见的几种排序

    

// 冒泡排序法
function bubble_sort($arr){
$count = count($arr);
if($count <= 0) return false;
for($i=0;$i<$count;$i++){
for($j=$count-1;$j<$i;$j--){
if($arr[$j] < $arr[$j-1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr;
}
// 快速排序法 取数组中间值=>遍历数组剩余元素=>小于中间值的放左边,大于中间值的放右边=>将左右循环如此直至不可再分->将已排好的合并
function quick_sort($arr){
$count = count($arr);
if($count <= 1) return $arr;
$key = $arr[0];
$left_arr = array();
$right_arr = array();
for($i=1;$i<$count;$i++){
if($arr[$i] <= $key){
$left_arr[] = $arr[$i];
}else{
$right_arr[] = $arr[$i];
}
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr,$arr($key),$right_arr);
}
// 顺序查找
function seq_sch($arr,$n,$k){
$arr[$n] = $k;
for($i=0;$i<$n;$i++){
if($arr[$i] == $k){
break;
}
if($i<$n){
return $i;
}else{
return -1;
}
}
}
// 二分法查找
function bin_sch($arr,$val,$low,$high){
if($low <= $high){
$mid = intval(($low + $high)/2);
if($arr[$mid] == $val){
return $mid;
}elseif($val < $arr[$mid]){
return bin_sch($arr,$val,$low,$mid-1);
}else{
return bin_sch($arr,$val,$mid+1,$high);
}
}
return -1;
}
// 二维数组排序
function array_sort($arr,$keys,$sort=0){
if(!is_array($arr)) return false;
$keysvalue = array();
foreach($arr as $key=>$val){
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else{
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key=>$vals){
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key=>$val){
$new_array[$key] = $arr[$val];
}
return $new_array;
}

u=1032673350,3857562570&fm=26&gp=0.jpg

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

Powered By Z-BlogPHP 1.5.2 Zero

WX:xcs345525801 QQ:345525801 Tel:19521445850 Email:xcssh868@163.com

Copyright © 2020 许承胜个人博客 版权所有 备案号:皖ICP备18014705号-1