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程序61条面向对象分析设计的经验小结
Nov 12 PHP
PHP Array交叉表实现代码
Aug 05 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
简单谈谈favicon
Jun 10 PHP
Zend Framework教程之Zend_Helpers动作助手ViewRenderer用法详解
Jul 20 PHP
php flush无效,IIS7下php实时输出的方法
Aug 25 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
php实现生成带二维码图片并强制下载功能
Feb 24 PHP
Laravel源码解析之路由的使用和示例详解
Sep 27 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
php项目中类的自动加载实例讲解
Sep 12 PHP
ThinkPHP5与单元测试PHPUnit使用详解
Feb 23 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
缅甸的咖啡简史
2021/03/04 咖啡文化
php实现的获取网站备案信息查询代码(360)
2013/09/23 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
2014/11/07 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP封装的page分页类定义与用法完整示例
2018/12/24 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
jQuery入门知识简介
2010/03/04 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
ECMAScript 5中的属性描述符详解
2015/03/02 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
如何用js判断dom是否有存在某class的值
2017/02/13 Javascript
Vue2.0表单校验组件vee-validate的使用详解
2017/05/02 Javascript
vue小白入门教程
2018/04/02 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
为什么选择python编程语言入门黑客攻防 给你几个理由!
2018/02/02 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
keras之权重初始化方式
2020/05/21 Python
html5需遵循的6个设计原则
2016/04/27 HTML / CSS
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
美国购买舞会礼服网站:Couture Candy
2019/12/29 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
避暑山庄导游词
2015/02/04 职场文书
质量负责人岗位职责
2015/02/15 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技