PHP四种基本排序
2024-10-06 22:06:56
1. 冒泡排序
// 1.冒泡排序法
$array = [12,3,23,2,4,1,0]; function maoPao($arr){
//先判断是不是空数组
if(!empty($arr)){
$len = count($arr);
for($i=0;$i<$len;$i++){
for($j=$i+1;$j<$len;$j++){
if($arr[$i]>$arr[$j]){
$tmp = $arr[$i];
$arr[$i] = $arr[$j];
$arr[$j] = $tmp;
}
}
}
} return $arr;
}
print_r(maoPao($array));
2. 快速排序
$array = [12,3,23,2,4,1,0]; // 2.快速排序法
function quick_sort($arr){
if (count($arr) <= 1) return $arr; //这个判断必须加,不然报错,$left_arr和$right_arr就变成空数组了 $len = count($arr);
$left_arr = array();
$right_arr = array(); for($i=1;$i<$len;$i++){ //$i一定要从1开始
if($arr[$i]<$arr[0]){
$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,array($arr[0]),$right_arr); //注意arr[0]要变成数组才不会出错
}
print_r(quick_sort($array));
3.选择排序
//选择排序
function selectSort($arr)
{
$len = count($arr);
for($i=0;$i<$len;$i++){
//获取但方法前值的索引
$minIndex = $i;
for($j=$i+1;$j<$len;$j++){
if($arr[$j]<$arr[$minIndex]){
$minIndex = $j;
}
}
if($i!=$minIndex){
$tmp = $arr[$i];
$arr[$i] = $arr[$minIndex];
$arr[$minIndex] = $tmp;
}
}
return $arr;
} $arr = [2,3,5,6,1,8,7,9,4];
$res = selectSort($arr);
echo ' 原数组:';
print_r($arr);
echo '<br>排序后的数组:';
print_r($res);
4.插入排序
function insert($arr) {
$len = count($arr);
if($len<=1) return $arr;
for($i=1; $i<$len; $i++){
for($j=$i; $j>0; $j--){
if($arr[$j] < $arr[$j-1]){
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}else{
break;
}
}
}
return $arr;
}
最新文章
- RMS:Microsoft Office检测到您的信息权限管理配置有问题。有关详细信息,请与管理员联系。(转)
- oracle数据泵导入
- 《Neural Network and Deep Learning》_chapter4
- WebDriver--操控浏览器
- 今天写项目时,突然发现canvas的一些公式不记得了,所以整理了一番,分享给大家。
- SignalR 远程访问并跨域
- ThinkPHP 3.2.3 Widget 扩展的使用
- HBase之计数器
- 【基本算法】 KMP文本串模式串的字符串匹配算法
- (转载)ios关闭虚拟键盘的几种方法
- mysql中utf8_bin、utf8_general_ci、utf8_general_cs编码区别
- Keil C51里面lib文件生成和调用方法
- Dev系列控件的AJAX (转)
- BufferedStream类 - 缓冲流
- matlab 自定义函数及调用
- Unity3D安装破解教程(以Unity5.3.4为例)(转)
- Centos 7 LVM xfs文件系统修复
- Android Tools 开发工具库开源项目总结
- 【LInux】查看Linux系统版本信息
- 彻底理解this指向-----实例分析