PHP:冒泡排序、快速查找和二分查找的思路以及算法
2016-09-27 16:20
495 查看
冒泡排序
$arr=array(1,43,54,62,21,66,32,78,36,76,39); /** * [getPao 就是像冒泡一样,每次从数组当中 冒一个最大的数出来] * @param [type] $arr [数组] * @return [type] [description] */ function getPao($arr){ $len = count($arr); for($i = 0; $i < $len ; $i++){ for($k = 0; $k < $len -1 ;$k++){ if($arr[$k+1] > $arr[$k]){ $tmp = $arr[$k+1]; $arr[$k+1] = $arr[$k]; $arr[$k] = $tmp; } } } return $arr; }
快速查找
/** * [getQuick 先使用一个固定的值,然后和数组中其他的数值进行对比,比当前小的数组放到一个数组中,比当前大的数组分当道另一个数组中,这两个数组重复前面的方法在进行排序,排好序的两个数组进行合并] * @param [type] $arr [description] * @return [type] [description] */ function getQuick($arr){ $len = count($arr); if($len <= 1){ return $arr; } $num = $arr[0]; $big = array(); $small = array(); foreach($arr as $v){ if($v > $num) $big[] = $v; //把比$num大的数放到一个数组里 if($v < $num) $small[] = $v; //把比$num小的数放到另一个数组里 } $big = getQuick($big); $small = getQuick($small); return array_merge($big, array($num), $small); }
二分查找
$arr1 = array(1,2,3,4,5,6,7,8,9,12,23,33,35,56,67,89,99); /** * [getCheck 假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。] * @param [type] $arr1 [数组] * @param [type] $num [要查找的] * @return [type] [description] */ function getCheck($arr1,$num){ $len = count($arr1); $low = 0; $high = $len -1; while($low <= $high){ $middle = floor(($low + $high)/2); if($num == $arr1[$middle]){ return $middle; }elseif($num < $arr1[$middle]){ $high = $middle -1 ; }else{ $low = $middle +1 ; } } }
相关文章推荐
- 算法---冒泡排序,快速排序,二分查找(折半查找),选择排序,插入排序
- 冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- 顺序表创建以及查找排序算法(含有顺序查找算法、带哨兵站顺序查找、折半查找算法、冒泡排序)的C++实现在vs2013环境下实现
- 二分查找以及冒泡排序
- 经典算法-选择排序,冒泡排序,二分查找
- 给大家分享下:快速排序、冒泡排序、二分查找
- #笔记#圣思园 JavaSE 第35讲——冒泡排序、交换排序、快速排序、二分查找
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- C语言实现直接插入排序,冒泡排序以及二分查找(巩固理解记忆)
- js基本算法:冒泡排序,二分查找的简单实例
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 二分查找,二叉查找树(二叉排序树)的基本思想以及算法实现
- java简单算法(二分查找 冒泡排序 判断是否为素数)
- PHP算法学习之“简单的交换排序”,“冒泡排序”以及“改进后的冒泡排序”
- 拓扑排序, 快速排序, 冒泡排序, 堆排序, 二分查找
- php冒泡排序、快速排序、快速查找、二维数组去重实例分享
- 经典算法:二分查找、插入排序、选择排序、冒泡排序
- PHP实现文本快速查找 - 二分查找
- php二分查找、顺序查找算法