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 ...
随机推荐
- css去掉input记住密码的黄色
input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus,input:-webkit-autof ...
- Kubernetes 1.5.3 部署
> kubernetes 1.5.3, 配置文档 # 1 初始化环境 ## 1.1 环境: | 节 点 | I P ||--------|-------------||no ...
- bzoj2700
题解: dp dp[i][j]表示i个红,j个绿的最小代价 然后再加上两位k,l,表示k个红连,l个绿连 然后转移 代码: #include<bits/stdc++.h> using na ...
- Django中通过定时任务触发页面静态化的方式
安装 pip install django-crontab 添加应用 INSTALLED_APPS = [ ... 'django_crontab', # 定时任务 ... ] 设置任务的定时时间 在 ...
- flowable ContentEngine和ContentEngineConfiguration的关系
一.CommandExecutor ContentEngineConfiguration继承自 AbstractEngineConfiguration. 在 AbstractEngineConfigu ...
- [Linux] find文件查找和grep文件内容查找
在使用linux时,经常需要进行文件查找.其中查找的命令主要有find和grep.两个命令是有区别的: (1)find命令:根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时 ...
- HDU 2273
http://acm.hdu.edu.cn/showproblem.php?pid=2273 N辆车排队过马路,不能相撞,问最短时间 ans=车的总长度/最小速度 #include <iostr ...
- json XML 比较
JSON: 这个为什么会变成“cc”而不是d.substring(dot+1);的值? 解决: var jsonsub = {}; jsonsub[cc] = e; arrnew.push(js ...
- “App Store加载失败,使已购页面再试一次”解决方案
问题描述: 用A账户登陆App Store,下载了Xcode.还没有下载完就需要更换账户 更换账户 找到App Store界面上部的商店,选择注销,然后再登陆. 账户更换完毕,讲道理来说应该是可以下载 ...
- Jmeter-ForEach控制器
ForEach Controller需要配合‘用户定义的变量’来使用,作用是参数化 名称:字面意思,ForEach Controller的名称 注释:字面意思 输入变量前缀:变量的前缀:如要使用的变量 ...