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 字段类型说明
Apr 27 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
php使用filter过滤器验证邮箱 ipv6地址 url验证
Dec 25 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
Apr 29 PHP
php修改指定文件后缀的方法
Sep 11 PHP
php实现的ping端口函数实例
Nov 12 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
php数组函数array_walk用法示例
May 26 PHP
php使用ftp实现文件上传与下载功能
Jul 21 PHP
PHP有序表查找之二分查找(折半查找)算法示例
Feb 09 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 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
用 PHP5 轻松解析 XML
2006/12/04 PHP
PHP连接MSSQL时nvarchar字段长度被截断为255的解决方法
2014/12/25 PHP
PHP实现生成带背景的图形验证码功能
2016/10/03 PHP
Laravel给生产环境添加监听事件(SQL日志监听)
2017/06/19 PHP
DHTML Slide Show script图片轮换
2008/03/03 Javascript
html数组字符串拼接的最快方法
2009/09/16 Javascript
jQuery阻止事件冒泡具体实现
2013/10/11 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
Node.js利用js-xlsx处理Excel文件的方法详解
2017/07/05 Javascript
Vue.js实现实例搜索应用功能详细代码
2017/08/24 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
nuxt 路由、过渡特效、中间件的实现代码
2020/11/06 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
Python实现删除时保留特定文件夹和文件的示例
2018/04/27 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Python如何优雅删除字符列表空字符及None元素
2020/06/25 Python
OpenCV+Python3.5 简易手势识别的实现
2020/12/21 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
网管求职信
2014/03/03 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
初一英语教学反思
2016/02/15 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python