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经典的给图片加水印程序
Dec 06 PHP
php eval函数用法 PHP中eval()函数小技巧
Oct 31 PHP
如何判断php数组的维度
Jun 10 PHP
仿dedecms下拉分页样式修改的thinkphp分页类实例
Oct 30 PHP
php结合js实现点击超链接执行删除确认操作
Oct 31 PHP
php中$_POST与php://input的区别实例分析
Jan 07 PHP
php字符串过滤与替换小结
Jan 26 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
Apr 26 PHP
WampServer搭建php环境时遇到的问题汇总
Jul 23 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
Yaf框架封装的MySQL数据库操作示例
Mar 06 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
ThinkPHP3.2.3框架邮件发送功能图文实例详解
2019/04/23 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
JavaScript实现删除,移动和复制文件的方法
2015/08/05 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
浅谈express 中间件机制及实现原理
2017/08/31 Javascript
Express系列之multer上传的使用
2017/10/27 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
2020/05/28 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python实现网站文件的全备份和差异备份
2014/11/30 Python
Python类方法__init__和__del__构造、析构过程分析
2015/03/06 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
这可能是最好玩的python GUI入门实例(推荐)
2019/07/19 Python
Django logging配置及使用详解
2019/07/23 Python
通过实例了解python property属性
2019/11/01 Python
python中Lambda表达式详解
2019/11/20 Python
Rakuten Kobo台湾:电子书、eReaders和Reading应用程式
2017/11/24 全球购物
项目资料员岗位职责
2013/12/10 职场文书
优秀求职信范文分享
2014/01/26 职场文书
促销活动计划书
2014/05/02 职场文书
全国优秀教师事迹材料
2014/08/26 职场文书
2014年小学安全工作总结
2014/12/04 职场文书
关于童年的读书笔记
2015/06/26 职场文书
检举信的写法
2019/04/10 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Python 内置函数速查表一览
2021/06/02 Python
js 实现验证码输入框示例详解
2022/09/23 Javascript