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 ...
随机推荐
- echarts在miniUI和ajax下动态渲染数据
<script src="echarts.js"></script> <script src="jquery-3.3.1.min.js&qu ...
- python:使用itchat实现手机控制电脑
1.准备材料 首先电脑上需要安装了python,安装了opencv更好(非必需) 如果安装了opencv的话,在opencv的python目录下找到cv2.pyd,将该文件放到python的库搜索路径 ...
- Algorithm2: 重复查过半数的元素
数组中,有一个元素的值在数组中重复的个数是超过一半,获得元素超过一半的元素值 int MoreThanHalfNumber(int * arr, int n){ in ...
- 【前端工具】 git windows下搭建全过程
1. Git,Windows下的Git,地址:http://msysgit.googlecode.com/files/Git-1.7.9-preview20120201.exe(方便下载) 2 .SS ...
- [转载]Spring源码下载地址
转载自:http://blog.csdn.net/liuzheng2684/article/details/6534722,谢谢! 今天想下载一下spring的源代码,登录到Spring官网,傻眼了, ...
- Slice header 中的frame_num的含义?
Frame_num表示解码的顺序.该图像是参考帧的时候,Frame_num才有意义.非参考帧的frame_num在poc type为2或3时,用于poc值的计算. H264中frame_num定义如下 ...
- 使用stringstream类
当需要格式化int类型为字符串时,可以使用这个类, 需要包含这个文件头: #include <sstream> 然后这样使用: //打开保存进度的RPG文件. std::stringstr ...
- 目标检测 - Tensorflow Object Detection API
一. 找到最好的工具 "工欲善其事,必先利其器",如果你想找一个深度学习框架来解决深度学习问题,TensorFlow 就是你的不二之选,究其原因,也不必过多解释,看过其优雅的代码架 ...
- E. Holes(分块)
题目链接: E. Holes time limit per test 1 second memory limit per test 64 megabytes input standard input ...
- BeautifulSoup的安装和使用
Python用做数据处理还是相当不错的,如果你想要做爬虫,python是很好的选择,它有很多已经写好的类包,只要调用,即可完成很多复杂的功能,此文中所有的功能都是基于BeautifulSoup这个包. ...