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 相关文章推荐
基于数据库的在线人数,日访问量等统计
Oct 09 PHP
与数据库连接
Oct 09 PHP
PHP函数utf8转gb2312编码
Dec 21 PHP
PHP和.net中des加解密的实现方法
Feb 27 PHP
PHP 类相关函数的使用详解
May 10 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
php获取当月最后一天函数分享
Feb 02 PHP
php遍历删除整个目录及文件的方法
Mar 13 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP模板引擎Smarty中变量的使用方法示例
Apr 11 PHP
php将html转为图片的实现方法
May 19 PHP
Laravel框架文件上传功能实现方法示例
Apr 16 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
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP实现通过URL提取根域名
2016/03/31 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
如何通过Apache在本地配置多个虚拟主机
2020/07/29 PHP
很棒的学习jQuery的12个网站推荐
2011/04/28 Javascript
JavaScript实现快速排序(自已编写)
2012/12/19 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
AngularJS修改model值时,显示内容不变的实例
2018/09/13 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
详解datagrid使用方法(重要)
2020/11/06 Javascript
python实现端口转发器的方法
2015/03/13 Python
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Python3写入文件常用方法实例分析
2015/05/22 Python
在Python的Flask框架中构建Web表单的教程
2016/06/04 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
Jupyter加载文件的实现方法
2020/04/14 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
CSS3 translate导致字体模糊的实例代码
2019/08/30 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
DNA测试:Orig3n
2019/03/01 全球购物
函授自我鉴定范文
2014/02/06 职场文书
十八届三中全会个人学习材料
2014/02/13 职场文书
农民工工资支付承诺函
2014/03/31 职场文书
实习证明格式范文
2015/06/16 职场文书
golang中的空接口使用详解
2021/03/30 Python
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
MySQL数据库表约束讲解
2022/06/21 MySQL