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实现框架(一)
Oct 09 PHP
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
Jul 17 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
Jul 01 PHP
php防注入,表单提交值转义的实现详解
Jun 10 PHP
codeigniter使用技巧批量插入数据实例方法分享
Dec 31 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
php获取指定日期之间的各个周和月的起止时间
Nov 24 PHP
php约瑟夫问题解决关于处死犯人的算法
Mar 23 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
在PHP语言中使用JSON和将json还原成数组的方法
Jul 19 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
Mar 14 PHP
php实现商城购物车的思路和源码分析
Jul 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
php Xdebug的安装与使用详解
2013/06/20 PHP
浅析php变量修饰符static的使用
2013/06/28 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
HTML中嵌入PHP的简单方法
2016/02/16 PHP
PHP7.1方括号数组符号多值复制及指定键值赋值用法分析
2016/09/26 PHP
Javascript - HTML的request类
2006/07/15 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
js Object2String方便查看js对象内容
2014/11/24 Javascript
利用BootStrap的Carousel.js实现轮播图动画效果
2016/12/21 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
jQuery cookie的公共方法封装和使用示例
2020/06/01 jQuery
[01:24]2014DOTA2 TI第二日 YYF表示这届谁赢都有可能
2014/07/11 DOTA
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
python 网络编程常用代码段
2016/08/28 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
python使用matplotlib画饼状图
2018/09/25 Python
python实现抖音点赞功能
2019/04/07 Python
对python中的装包与解包实例详解
2019/08/24 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
Python作用域与名字空间原理详解
2020/03/21 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
iframe与window.onload如何使用详解
2020/05/07 HTML / CSS
美国紧身牛仔裤品牌:NYDJ
2017/05/24 全球购物
保险公司年会主持词
2014/03/22 职场文书
信访工作经验交流材料
2014/05/23 职场文书
学校运动会广播稿100条
2014/09/14 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
检讨书模板大全
2015/05/07 职场文书
2016秋季田径运动会广播稿
2015/12/21 职场文书
Centos7中MySQL数据库使用mysqldump进行每日自动备份的编写
2021/08/02 MySQL
浅谈JavaScript浅拷贝和深拷贝
2021/11/07 Javascript