php冒泡排序、快速排序、快速查找、二维数组去重实例分享


Posted in PHP onApril 24, 2014

一、冒泡排序

//冒泡排序
function bubble_sort($array)
{
    $count=count($array);
    if($count <= 0){
        return false;
    }
    for($i=0;$i<$count;$i++){
        for($j=0;$j<$count-$i-1;$j++){
            if( $array[$j] > $array[$j+1] ){
                $temp=$array[$j];
                $array[$j]=$array[$j+1];
                $array[$j+1]=$temp;
            }
        }
    }
    return $array;
}

二、快速排序

//快排
function quick_sort($array)
{
    $count=count($array);
    if($count <= 1){
        return $array;
    }
    $key=$array[0];
    $array_left=array();
    $array_right=array();
    for($i=1;$i<$count;$i++){
        if($array[$i] < $key ){
            $array_left[]=$array[$i];
        }else{
            $array_right[]=$array[$i];
        }
    }
    $array_left=quick_sort($array_left);
    $array_right=quick_sort($array_right);
    return array_merge($array_left,array($key),$array_right);
}
$myarray=array(1,5,3,4,12,10,8);
print_r(bubble_sort($myarray));
echo "<br/>";
print_r(quick_sort($myarray));
echo "<br/>";

三、快速查找值第一次出现的位置

/**
 * 快速查找值第一次出现的位置
 * @param array $array          数组
 * @param string $k             要找的值
 * @param int $low              查找范围的最小键值
 * @param int $high             范围的最大键值   
 */
function search($array, $k, $low=0, $high=0)
{    
 //判断是否为第一次调用   
    if(count($array)!=0 and $high == 0){
        $high = count($array);   
    }
    //如果还存在剩余的数组元素
    if($low <= $high){
     //取$low和$high的中间值
        $mid = intval(($low+$high)/2);
        //如果找到则返回
        if ($array[$mid] == $k){
            return $mid;
        }
        //如果没有找到,则继续查找
        elseif ($k < $array[$mid]){
            return search($array, $k, $low, $mid-1);
        }
        else {
            return search($array, $k, $mid+1, $high);
        }
    }
    return -1;
}
$array = array(4,5,7,8,9,10,8);                  //测试search函数 
echo search($array, 8);                          //调用search函数并输出查找结果

四、去掉二维数组重复项

/**
     * 去掉二维数组中的重复项
     * @param $array2D          数组
     * @param $keyArray         还原时字段对应的key
     * @return array            去掉了重复项的数组
     */
    public function array_unique_fb($array2D,$keyArray){
        $temp=array();
        foreach ($array2D as $v){
            $v = join(",",$v);  //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
            $temp[] = $v;
        }
        $temp = array_unique($temp);    //去掉重复的字符串,也就是重复的一维数组
        foreach ($temp as $k => $v){
            //$temp[$k] = explode(",",$v);   //再将拆开的数组重新组装
           $temp[$k]= array_combine($keyArray ,explode(",",trim($v)));
        }
        return $temp;
    }
 
$testArray=array_unique_fb(array(array('a'=>1,'b'=>2,'c'=>3),
    array('a'=>1,'b'=>2,'c'=>3),array('a'=>1,'b'=>2,'c'=>3)),array('a','b','c''));
print_r($testArray);
PHP 相关文章推荐
PHP 基本语法格式
Dec 15 PHP
dedecms系统的广告设置代码 基础版本
Apr 09 PHP
window+nginx+php环境配置 附配置搭配说明
Dec 29 PHP
str_replace只替换一次字符串的方法
Apr 09 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
Jun 27 PHP
mantis安装、配置和使用中的问题小结
Jul 14 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
Laravel中Facade的加载过程与原理详解
Sep 22 PHP
php实现文件上传基本验证
Mar 04 PHP
基于PHP+mysql实现新闻发布系统的开发
Aug 06 PHP
PHP语言对接抖音快手小红书视频/图片去水印API接口源码
Aug 11 PHP
php获取中文拼音首字母类和函数分享
Apr 24 #PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
Apr 24 #PHP
php中有关字符串的4个函数substr、strrchr、strstr、ereg介绍和使用例子
Apr 24 #PHP
php计算当前程序执行时间示例
Apr 24 #PHP
php实现的百度搜索某地天气的小偷代码
Apr 23 #PHP
php url路由入门实例
Apr 23 #PHP
通过curl模拟post和get方式提交的表单类
Apr 23 #PHP
You might like
php设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP+MySQL插入操作实例
2015/01/21 PHP
Yii框架学习笔记之应用组件操作示例
2019/11/13 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
激活 ActiveX 控件
2006/10/09 Javascript
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
js验证电话号码与手机支持+86的正则表达式
2014/01/23 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
APP中javascript+css3实现下拉刷新效果
2016/01/27 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
js中null与空字符串&quot;&quot;的区别讲解
2019/01/17 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
手写Vue2.0 数据劫持的示例
2021/03/04 Vue.js
Eclipse + Python 的安装与配置流程
2013/03/05 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
使用Rasterio读取栅格数据的实例讲解
2019/11/26 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
python 画图 图例自由定义方式
2020/04/17 Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
2021/01/25 Python
美国知名生活购物网站:Goop
2017/11/03 全球购物
我们是伦敦女孩:WalG
2018/01/08 全球购物
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
网络工程师自荐书范文
2014/04/01 职场文书
《独坐敬亭山》教学反思
2014/04/08 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
体操比赛口号
2014/06/10 职场文书
大学生个人求职信例文
2014/07/07 职场文书
中层领导干部群众路线对照检查材料思想汇报
2014/10/02 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
Android存储中最基本的文件存储方式
2022/04/30 Java/Android
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS