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 相关文章推荐
基于mysql的论坛(3)
Oct 09 PHP
php 删除数组元素
Jan 16 PHP
PHP session有效期session.gc_maxlifetime
Apr 20 PHP
PHP闭包(Closure)使用详解
May 02 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
Yii框架实现的验证码、登录及退出功能示例
May 20 PHP
PHP编程实现微信企业向用户付款的方法示例
Jul 26 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
PHP内部实现打乱字符串顺序函数str_shuffle的方法
Feb 14 PHP
php实现微信小程序授权登录功能(实现流程)
Nov 13 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
PHP获取文件后缀名的三个函数
2012/10/15 PHP
php求数组全排列,元素所有组合的方法
2016/05/05 PHP
利用PHP命令行模式采集股票趋势信息
2016/08/09 PHP
php实现的错误处理封装类实例
2017/06/20 PHP
PHP实现微信支付(jsapi支付)流程步骤详解
2018/03/15 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
关于恒等于(===)和非恒等于(!==)
2007/08/20 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
node.js插件nodeclipse安装图文教程
2020/10/19 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
详解微信小程序设置底部导航栏目方法
2017/06/29 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
js如何找出字符串中的最长回文串
2018/06/04 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
js数组去重的方法总结
2019/01/18 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
[02:16]深扒TI7聊天轮盘语音出处2
2017/05/11 DOTA
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
python中with用法讲解
2020/02/07 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
通过一张图教会你CSS3倒影的实现
2017/09/26 HTML / CSS
应届生护士求职信
2013/11/01 职场文书
大学运动会入场词
2014/02/22 职场文书
团日活动总结报告
2014/06/25 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
先进班组材料范文
2014/12/25 职场文书
校运会通讯稿
2015/07/18 职场文书
食品卫生管理制度
2015/08/06 职场文书
宿舍管理制度范本
2015/08/07 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书