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生成html分页列表的代码
Mar 18 PHP
可以在线执行PHP代码包装修正版
Mar 15 PHP
使用PHP实现二分查找算法代码分享
Jun 24 PHP
PHP中英混合字符串截取函数代码
Jul 17 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
Apr 26 PHP
PHP实现取得HTTP请求的原文
Aug 18 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
thinkphp3.2.2实现生成多张缩略图的方法
Dec 19 PHP
浅谈thinkphp的实例化模型
Jan 04 PHP
php实现字符串反转输出的方法
Mar 14 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
PHP基于Redis消息队列实现发布微博的方法
May 03 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中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
php的ddos攻击解决方法
2015/01/08 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
2017/11/12 PHP
php数组遍历类与用法示例
2019/05/24 PHP
javascript 日期时间函数(经典+完善+实用)
2009/05/27 Javascript
jQuery下扩展插件和拓展函数的写法(匿名函数使用的典型例子)
2010/10/20 Javascript
JavaScript对象之间的转换 jQuery对象和原声DOM
2011/03/07 Javascript
jQuery使用数组编写图片无缝向左滚动
2012/12/11 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
2013/01/02 Javascript
Javascript倒计时页面跳转实例小结
2013/09/11 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
2014/06/23 Javascript
JavaScript实现控制打开文件另存为对话框的方法
2015/04/17 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
JavaScript预解析及相关技巧分析
2016/04/21 Javascript
AngularJS基础 ng-hide 指令用法及示例代码
2016/08/01 Javascript
JS及JQuery对Html内容编码,Html转义
2017/02/17 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
python中常用的各种数据库操作模块和连接实例
2014/05/29 Python
python 循环遍历字典元素的简单方法
2016/09/11 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
服务器端jupyter notebook映射到本地浏览器的操作
2020/04/14 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
英国评分最高的女性剃须刀订阅盒:FFS Beauty
2018/01/25 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
高二历史教学反思
2014/01/25 职场文书
幼师自我鉴定
2014/02/01 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
初中优秀学生评语
2014/12/29 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS
新手必备之MySQL msi版本下载安装图文详细教程
2021/05/21 MySQL
Redis 彻底禁用RDB持久化操作
2021/07/09 Redis