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 相关文章推荐
discuz的php防止sql注入函数
Jan 17 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 PHP
使用PHP强制下载PDF文件示例
Jan 17 PHP
php导出excel格式数据问题
Mar 11 PHP
yii操作session实例简介
Jul 31 PHP
html静态页面调用php文件的方法
Nov 13 PHP
PHP使用strstr()函数获取指定字符串后所有字符的方法
Jan 07 PHP
php实现常见图片格式的水印和缩略图制作(面向对象)
Jun 15 PHP
thinkPHP实现多字段模糊匹配查询的方法
Dec 01 PHP
PHP使用SWOOLE扩展实现定时同步 MySQL 数据
Apr 09 PHP
Laravel 实现密码重置功能
Feb 23 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
Jan 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
Linux下php5.4启动脚本
2014/08/03 PHP
php计算两个日期相差天数的方法
2015/03/14 PHP
PHP实现文件上传下载实例
2016/10/18 PHP
In Javascript Class, how to call the prototype method.(three method)
2007/01/09 Javascript
Mootools 图片展示插件(lightbox,ImageMenu)收集集合
2010/05/21 Javascript
JS基础之undefined与null的区别分析
2011/08/08 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
2013/09/26 Javascript
js类式继承的具体实现方法
2013/12/31 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
使用Jquery实现每日签到功能
2015/04/03 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
JS 调试中常见的报错问题解决方法
2017/05/20 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
跟老齐学Python之大话题小函数(1)
2014/10/10 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
PyTorch: 梯度下降及反向传播的实例详解
2019/08/20 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
Python实现播放和录制声音的功能
2020/08/12 Python
python em算法的实现
2020/10/03 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
党员三严三实心得体会
2014/10/13 职场文书
乡镇安全生产月活动总结
2015/05/08 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书
何时使用Map来代替普通的JS对象
2021/04/29 Javascript
ICOM R71E和R72E图文对比解说
2022/04/07 无线电