PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解


Posted in PHP onJune 25, 2013

数据结构很重要,算法+数据结构+文档=程序
使用PHP描述冒泡排序算法,对象可以是一个数组

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

使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}

写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if (!is_array($arr)) {
return false;
}
$keysvalue = array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}

PHP 相关文章推荐
PHP VS ASP
Oct 09 PHP
c#中的实现php中的preg_replace
Dec 21 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
php调用mysql数据 dbclass类
May 07 PHP
一个简单的网页密码登陆php代码
Jul 17 PHP
基于php iconv函数的使用详解
Jun 09 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP统一页面编码避免乱码问题
Apr 09 PHP
PHP 记录访客的浏览信息方法
Jan 29 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 PHP
使用php判断网页是否gzip压缩
Jun 25 #PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
Jun 25 #PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 #PHP
提升PHP性能的21种方法介绍
Jun 25 #PHP
解析如何通过PHP函数获取当前运行的环境 来进行判断执行逻辑(小技巧)
Jun 25 #PHP
解析php取整的几种方式
Jun 25 #PHP
关于PHP内存溢出问题的解决方法
Jun 25 #PHP
You might like
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
thinkphp项目部署到Linux服务器上报错“模板不存在”如何解决
2016/04/27 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
2016/12/12 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
无阻塞加载脚本分析[全]
2011/01/20 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
加随机数引入脚本不让浏览器读取缓存
2014/09/04 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
jQuery动态添加与删除tr行实例代码
2016/10/18 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
jQuery 改变P标签文本值方法
2018/02/24 jQuery
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
ES6 proxy和reflect的使用方法与应用实例分析
2020/02/15 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
json跨域调用python的方法详解
2017/01/11 Python
python 第三方库的安装及pip的使用详解
2017/05/11 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
pyqt5利用pyqtDesigner实现登录界面
2019/03/28 Python
详解python pandas 分组统计的方法
2019/07/30 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
浅谈Html5多线程开发之WebWorkers
2018/05/02 HTML / CSS
亚马逊中国官方网站:amazon.cn
2017/05/25 全球购物
严选全球尖货,立足香港:Bonpont宝盆
2018/07/24 全球购物
建材业务员岗位职责
2013/12/08 职场文书
采购员的工作职责
2013/12/26 职场文书
军训心得体会
2013/12/31 职场文书
基层领导干部“四风”问题批评与自我批评
2014/09/23 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
《确定位置》教学反思
2016/02/18 职场文书