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 相关文章推荐
40个迹象表明你还是PHP菜鸟
Sep 29 PHP
PHP 生成的XML以FLASH获取为乱码终极解决
Aug 07 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
Jul 01 PHP
php中使用临时表查询数据的一个例子
Feb 03 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
ThinkPHP模型详解
Jul 27 PHP
学习php设计模式 php实现合成模式(composite)
Dec 08 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP使用pdo连接access数据库并循环显示数据操作示例
Jun 05 PHP
php实现微信企业转账功能
Oct 02 PHP
PHP数组array类常见操作示例
May 15 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中将html中的br换行符转换为文本输入中的换行符
2013/03/26 PHP
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
浅谈web上存漏洞及原理分析、防范方法(文件名检测漏洞)
2013/06/29 PHP
PHP实现时间日期友好显示实现代码
2019/09/08 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
eclipse导入jquery包后报错的解决方法
2014/02/17 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
vue2.0 axios跨域并渲染的问题解决方法
2018/03/08 Javascript
IE9 elementUI文件上传的问题解决
2018/10/17 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
压缩包密码破解示例分享(类似典破解)
2014/01/17 Python
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
python搭建微信公众平台
2016/02/09 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
python 带时区的日期格式化操作
2020/10/23 Python
倩碧英国官网:Clinique英国
2018/08/10 全球购物
致短跑运动员广播稿
2014/01/09 职场文书
主持人演讲稿
2014/05/13 职场文书
国庆节活动总结
2014/08/26 职场文书
乡镇镇长个人整改措施
2014/10/01 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
银行资信证明
2015/06/17 职场文书
nginx如何将http访问的网站改成https访问
2021/03/31 Servers
OpenCV全景图像拼接的实现示例
2021/06/05 Python
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫
python基础之//、/与%的区别详解
2022/06/10 Python