php 实现四种排序两种查找
function bubbleSort($arr)
{
$len = count($arr);
if($len<=1)
{
return $arr;
}
for ($i=0;$i<$len;$i++)
{
for ($j=1;$j<$len-$i;$j++)
{
if($arr[$j-1]>$arr[$j])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$j-1];
$arr[$j-1] = $tmp;
}
}
}
return $arr; } function selectSort($arr)
{
$len = count($arr);
for($i=0;$i<$len;$i++)
{
for($j = $i+1;$j<$len;$j++)
{
if($arr[$i]>$arr[$j])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $tmp;
}
}
}
} function insertSort($arr)
{
$len = count($arr);
for($i=1; $i<$len; $i++)
{
for ($j = $i-1;$j>=0;$j--)
{
if($arr[$i]>$arr[$j])
{
$tmp = $arr[$j];
$arr[$j] = $arr[$i];
$arr[$i] = $tmp;
}
}
}
return $arr;
} function quickSort($arr)
{
$len = count($arr);
if($len <=1 )
{
return $arr;
}
$base = $arr[0];
$left_arr = [];
$right_arr = [];
for($i=1;$i<$len;$i++)
{
if($base>$arr[$i])
{
$left_arr[] = $arr[$i];
}
else
{
$right_arr[] = $arr[$i];
}
}
$left_arr = $this->quick_sort($left_arr);
$right_arr = $this->quickSort($right_arr); return array_merge($left_arr,array($base),$right_arr);
} function halfSearch($arr, $search_val)
{
$low = 0;
$high = count($arr)-1;
while($low <= $high)
{
if($arr[ceil(($low+$high)/2)] < $search_val)
{
$low = ceil(($low+$high)/2)+1;
}
elseif($arr[ceil(($low+$high)/2)] > $search_val)
{
$high = ceil(($low+$high)/2)-1;
}
else
{
return $arr[ceil(($low+$high)/2)];
}
}
return false;
} function strMatch($str, $par)
{
for($i=0;$i<strlen($str);$i++)
{
$match =$i;
$j = 0;
while($i<strlen($str) && $j<strlen($par) && $par[$j] == $str[$match])
{
$match++;
$j++;
}
if($j == strlen($par)) return $match - $j;
}
return false;
}
php 实现四种排序两种查找的更多相关文章
- php常见的几种排序以及二分法查找
<?php 1.插入排序 思想: 每次将一个待排序的数据元素插入到前面已经排好序的数列中,使数列依然有序,知道待排序数据元素全部插入完为止. 示例: [初始关键字] [49] 38 65 97 ...
- Java对象排序两种方法
转载:https://blog.csdn.net/wangtaocsdn/article/details/71500500 有时候需要对对象列表或数组进行排序,下面提供两种简单方式: 方法一:将要排序 ...
- 贝叶斯A/B测试 - 一种计算两种概率分布差异性的方法过程
1. 控制变量 0x1:控制变量主要思想 科学中对于多因素(多变量)的问题,常常采用控制因素(变量)的方法,吧多因素的问题变成多个单因素的问题.每一次只改变其中的某一个因素,而控制其余几个因素不变,从 ...
- thinkphp 框架两种模式 两种模式:开发调试模式、线上生产模式
define(‘APP_DEBUG’,true/false);
- Hystrix-基本概念(设计原则和两种隔离技术)
一.Hystrix是什么在微服务的架构系统中,每个服务都可能会调用很多其他服务,被调用的那些服务就是依赖服务.有的时候某些依赖服务出现故障也是很正常的.Hystrix可以让我们在对服务间的调用进行控制 ...
- ListView加载两种以上不同的布局
不同的项目布局(item layout) Listview一种单一的item 布局有时候不能完全满足业务需求,我们需要加载两种或两种以上不同的布局,实现方法很简单: 重写 getViewTypeCou ...
- Nginx访问PHP文件的File not found错误处理,两种情况
这个错误很常见,原有有下面两种几种 1. php-fpm找不到SCRIPT_FILENAME里执行的php文件 2. php-fpm不能访问所执行的php,也就是权限问题 第一种情况 可以在你的loc ...
- QT中获取选中的radioButton的两种方法(动态取得控件的objectName之后,对名字进行比较)
QT中获取选中的radioButton的两种方法 QT中要获取radioButton组中被选中的那个按钮,可以采用两种如下两种办法进行: 方法一:采用对象名称进行获取 代码: 1 QRadioBu ...
- 用easyui从servlet传递json数据到前端页面的两种方法
用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...
随机推荐
- hdu 6034 Balala Power!
Balala Power! Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
- log4cpp之Layout布局
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- python之阶乘的小例子
现在自己写阶乘是这个样子的 def f(x): return x * f(x-1) if x >1 else 1 后来无意中看到耗子的一篇<Python程序员的进化>的文章, 感脚这 ...
- 定位CPU高问题三把斧
1.top -H -p PID 查看对应进程的哪个线程占用CPU过高 2.printf "%x\n" tid 将需要的线程ID转换为16进制格式 3.jstack pid &g ...
- Silverlight5_Tools安装报错解决方案
将Silverlight5_Tools.exe解压,依次安装 VS10SP1-KB2615527.exe silverlight_sdk.msi RiaServices.msi
- Linux下保存文件
经常需要dump数据,mark一下 #if 0 FILE * fd = NULL; fd = fopen("/mnt/raw.pcm", "ab+"); if ...
- oracle数据库导入导出09192255
1.导入数据库(dmp) Linux系统中: 1. 用root账号登录服务器,然后切换到oracle账号(安装oracle数据库的时候用的用的账号) 2. 切换到oralce的安装目录下的bin下 3 ...
- I.MX6 修改调试串口号(ttymx0 -> ttymxc2)
I.MX6 修改调试串口号(ttymx0 -> ttymxc2) 一.参考文章: uboot修改默认调试串口ttymxc0 ->ttymxc4(imx53) http://www.xueb ...
- MySQL 5.6.30 升级到5.7.10
MySQL 5.6.30 升级到5.7.10 注意,这种方式的前提是数据文件没有和软件目录在一起,如果在一起,需要停止数据库后先移动数据文件 1.解压5.7.10包到/usr/local2.停止当前的 ...
- Srping框架中使用@query注解实现复杂查询
[自己项目代码] @Query("select bean from User bean where bean.org.id=?1 and bean.group.id=?2") pu ...