php 冒泡排序 快速排序 二分查找
来源:互联网 发布:中国出口数据查询 编辑:程序博客网 时间:2024/05/16 09:27
<?php
/*
*
* 冒泡排序
*
*/
class getNum{
public $arr=array();
public function doNum(){
$arr = $this->arr;
$temp='';
$len=count($arr);
for($i=0;$i<$len;$i++){
for($j=0;$j<=$i-1;$j++){
if($arr[$i]<$arr[$j]){
$temp = $arr[$j];
$arr[$j]=$arr[$i];
$arr[$i]=$temp;
}
}
}
return $arr;
}
}
/*
* 快速排序
* 一般以第一个元素为准 大于这个元素放左边 小于这个元素放右边
*/
class quickNum{
public function getQuickNum($arr=''){
$arr_left=array();
$arr_right=array();
if(count($arr)<=1){
return $arr;
}
$b=$arr[0];
for($i=1;$i<count($arr);$i++){
if($arr[$i]<$b){
$arr_left[]=$arr[$i];
}else{
$arr_right[]=$arr[$i];
}
}
$arr_left=$this->getQuickNum($arr_left);
$arr_right=$this->getQuickNum($arr_right);
return array_merge($arr_left,array($b),$arr_right);
}
}
//$arr=[3,4,7,1,8,2];
//$r=new quickNum();
//
//$res = $r->getQuickNum($arr);
//print_r($res);
/*
* 二分查找
* 必须是个有序数组从小大
* 取数组中间key 从而通过key获取value(中间值) 与要查找的值做对比
* 如果要查找的值大于中间值 key加1 反之key减1
* 如果正好相等返回 这个 数组下标
*/
class getValue{
public function doValue($arr,$bengin,$end,$val){//0 14 13
if($bengin<=$end){
$key=floor(($bengin+$end)/2);//9
if($arr[$key] == $val){
return $key;
}elseif ($arr[$key]<$val){//4<5
return $this->doValue($arr,$key+1,$end,$val);//4--7
}else{
return $this->doValue($arr,$bengin,$key-1,$val);
}
}else{
return -1;
}
}
}
$arr=[1,3,4,5,6,7,8,9,10,11,12,13,14,15,165];
$bengin = 0;
$end=count($arr);
$val=14;
$r=new getValue();
$res = $r->doValue($arr,$bengin,$end,$val);
print_r($res);
/*
*
* 冒泡排序
*
*/
class getNum{
public $arr=array();
public function doNum(){
$arr = $this->arr;
$temp='';
$len=count($arr);
for($i=0;$i<$len;$i++){
for($j=0;$j<=$i-1;$j++){
if($arr[$i]<$arr[$j]){
$temp = $arr[$j];
$arr[$j]=$arr[$i];
$arr[$i]=$temp;
}
}
}
return $arr;
}
}
/*
* 快速排序
* 一般以第一个元素为准 大于这个元素放左边 小于这个元素放右边
*/
class quickNum{
public function getQuickNum($arr=''){
$arr_left=array();
$arr_right=array();
if(count($arr)<=1){
return $arr;
}
$b=$arr[0];
for($i=1;$i<count($arr);$i++){
if($arr[$i]<$b){
$arr_left[]=$arr[$i];
}else{
$arr_right[]=$arr[$i];
}
}
$arr_left=$this->getQuickNum($arr_left);
$arr_right=$this->getQuickNum($arr_right);
return array_merge($arr_left,array($b),$arr_right);
}
}
//$arr=[3,4,7,1,8,2];
//$r=new quickNum();
//
//$res = $r->getQuickNum($arr);
//print_r($res);
/*
* 二分查找
* 必须是个有序数组从小大
* 取数组中间key 从而通过key获取value(中间值) 与要查找的值做对比
* 如果要查找的值大于中间值 key加1 反之key减1
* 如果正好相等返回 这个 数组下标
*/
class getValue{
public function doValue($arr,$bengin,$end,$val){//0 14 13
if($bengin<=$end){
$key=floor(($bengin+$end)/2);//9
if($arr[$key] == $val){
return $key;
}elseif ($arr[$key]<$val){//4<5
return $this->doValue($arr,$key+1,$end,$val);//4--7
}else{
return $this->doValue($arr,$bengin,$key-1,$val);
}
}else{
return -1;
}
}
}
$arr=[1,3,4,5,6,7,8,9,10,11,12,13,14,15,165];
$bengin = 0;
$end=count($arr);
$val=14;
$r=new getValue();
$res = $r->doValue($arr,$bengin,$end,$val);
print_r($res);
阅读全文
0 0
- php 冒泡排序 快速排序 二分查找
- 冒泡排序,快速排序,二分查找
- 拓扑排序, 快速排序, 冒泡排序, 堆排序, 二分查找
- 插入,冒泡,选择,快速排序,二分查找
- 快速、插入、冒泡排序,二分查找
- 冒泡排序 二分查找 快速排序 线性查找
- 冒泡排序+二分查找
- 冒泡排序、二分查找
- PHP:冒泡排序、快速查找和二分查找的思路以及算法
- 给大家分享下:快速排序、冒泡排序、二分查找
- 简单Java冒泡排序 二分查找 快速排序
- php 快速排序和二分查找
- 快速排序+二分查找
- PHP 数组排序(冒泡排序、选择排序);数组查找(顺序查找、二分查找)
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- 插入,冒泡,选择,快速排序,二分查找(Java版)
- Java冒泡,快速,插入,选择排序^_^+二分算法查找
- 冒泡排序,选择排序,快速排序,堆排序与二分查找算法
- Swift4.0 一般提示框和网络提示框
- BAT都在谈AI,但这家公司的人脸识别术已做到了全球第一
- Storm Tuple
- 2017“中国好SaaS”上海站Top3出炉,企业级SaaS创业正在向产业化迈进
- 更新于2017.09 全新支持IE8以下的java版本和js版本
- php 冒泡排序 快速排序 二分查找
- 吴恩达最新满满干货告诉你,怎样才能成为真正的AI公司(附视频)
- 100+经典Java面试题及答案解析
- tmux配置
- 关于一个STM32编译报错问题,变量声明不能在语句后面
- udp client 第二次操作时报错 write: connection refused
- LintCode-分治-二叉树中的最大路径和
- 新建对象时 属性发生的变化
- C语言转换大小写