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 相关文章推荐
Session的工作方式
Oct 09 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
php动态实现表格跨行跨列实现代码
Nov 06 PHP
php session_start()出错原因分析及解决方法
Oct 28 PHP
php二维数组排序方法(array_multisort usort)
Dec 25 PHP
PHP使用CURL_MULTI实现多线程采集的例子
Jul 29 PHP
分享最受欢迎的5款PHP框架
Nov 27 PHP
php集成动态口令认证
Jul 21 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
Sep 21 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
解决laravel中日志权限莫名变成了root的问题
Oct 17 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
Jan 02 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
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
避免 showModalDialog 弹出新窗体的原因分析
2010/05/31 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
javascript开发技术大全-第1章javascript概述
2011/07/03 Javascript
js实现网页自动刷新可制作节日倒计时效果
2014/05/27 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
使用jQuery判断浏览器滚动条位置的方法
2016/05/30 Javascript
AngularJS基础 ng-init 指令简单示例
2016/08/02 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
JS中Safari浏览器中的Date
2017/07/17 Javascript
angularjs利用directive实现移动端自定义软键盘的示例
2017/09/20 Javascript
webpack+vue中使用别名路径引用静态图片地址
2017/11/20 Javascript
JQuery扩展对象方法操作示例
2018/08/21 jQuery
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
[03:55]2014DOTA2国际邀请赛 Fnatic经理采访赢DK在情理之中
2014/07/10 DOTA
Python3处理HTTP请求的实例
2018/05/10 Python
解决安装python库时windows error5 报错的问题
2018/10/21 Python
实例介绍Python中整型
2019/02/11 Python
python监控nginx端口和进程状态
2019/09/06 Python
python3 写一个WAV音频文件播放器的代码
2019/09/27 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
html5指南-6.如何创建离线web应用程序实现离线访问
2013/01/07 HTML / CSS
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
Nike西班牙官方网站:Nike.com (ES)
2017/10/30 全球购物
2014年党员公开承诺书范文
2014/03/28 职场文书
大学新生入学教育方案
2014/05/16 职场文书
欢迎领导标语
2014/06/27 职场文书
学校联谊协议书
2014/09/16 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
2014初中数学教研组工作总结
2014/12/19 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
毕业论文指导老师意见
2015/06/04 职场文书