//无聊的冒泡算法
function mySort($list, $type = "sort") {if (is_array($list)) {if (count($list) >= 1) {for ($i = 0; $i < count($list); $i++) {for ($j = 0; $j < count($list) - 1; $j++) {if ($type == "sort") {if ($list[$j] > $list[$j + 1]) {$tmp = $list[$j + 1];$list[$j + 1] = $list[$j];$list[$j] = $tmp;}} else if ($type == "asort") {if ($list[$j] < $list[$j + 1]) {$tmp = $list[$j + 1];$list[$j + 1] = $list[$j];$list[$j] = $tmp;}}}}}}return $list;
}
//$arr = array(8,4,3,6,1,0,2,22,45);
//print_r(mySort($arr));
//echo "<BR><BR>";
//print_r(mySort($arr,"asort"));
//快速排序的实现原理
function quickSort(array $list)
{
//     static $i=0;
//     $i++;
//     echo "<BR>quickSort{$i}<BR>";
//     var_dump($list);
//     echo "<BR><BR>";//还是有点不理解,现在从第一次开始进行前移//第一次传入的是这个数组//array(1,4,22,5,7,6,9)//$key值应该是1//$left = array();//$right = array(4,22,5,7,6,9);//开始递归$left()数组//这个是空数组递归也白递归了//开始递归$right()数组//传入的数组为array(4,22,5,7,6,9);//$key值为4//$left = array();//$right = array(22,5,6,9);//开始递归$left数组//$left数组为空,没有什么好递归的//开始递归$rigth数组//传入的数组为array(22,5,6,9);//$key = 22;//$left = array(5,6,9);//$right = array();//开始$left //传入的数组为 array(5,6,9)//$key = 5;//$left = array();//$right = array(6,9);//开始$right//传入数组为 array(6,9);//$key = 6//$left = array();//$right = array(9);//开始$right//长度为1直接返回9//return 9;//需要将$left, $key, $right的值返回//return array(6,9)//return array(5,6,9)//return array($left, $key, $right) array(5,6,9,22)//retyrn array(4,5,6,9,22)$len = count($list);if($len <=1){return $list;}$key = $list[0];$left = array();$right = array();for($i=1; $i<$len; $i++){ //注意这里是从第一个元素开始,已经把取出来的$key值没有计算了if($list[$i] < $key){$left[] = $list[$i];}else{$right[] = $list[$i];}}$left = quickSort($left);$right = quickSort($right);return array_merge($left, array($key),$right);
}
//print '<pre>';
//quickSort(array(1,4,22,5,7,6,9));
print_r(quickSort(array(1,4,22,5,7,6,9)));
//print '</pre>';
function myQuickSort(array $list)
{$len = count($list);if($len <=1){return $list;}$key = $list[0];$left = array();$right = array();for($i=1; $i<$len; $i++){if($list[$i] < $key){$left[] = $list[$i];}else{$right[] = $list[$i];} }$left = myQuickSort($left);$right = myQuickSort($right);//合并三个数组值,$left,$key, $right//return array_merge($left, array($key), $right);return array_merge($right, array($key), $left);
}
$list = array(55,23,14,99,84,11,66);
echo "<per>";
print_r(myQuickSort($list));
echo "<per>";

  

对冒泡和二分法,特别是二分法有了更深的理解相关推荐

  1. python实现二分法查找_python3 二分法查找

    ''' 二分法查找 有序列表 掐头去尾取中间 查找列表中xx在不在列表中,在,则返回索引值 ''' # lst = [1, 4, 6, 8, 9, 21, 23, 26, 35, 48, 49, 54 ...

  2. java二分法排序_二分法排序讲解『附视频』

    二分法排序讲解『附视频』 时间:2017-06-22     来源:华清远见JAVA学院 算法一直是Java编程学习中的重点和难点,今天华清Java学院小编就和大家分享一下Java中的二分法排序. ① ...

  3. c语言二分法排序原理,二分法原理是什么意思_二分法排序原理图解

    lookup函数查找是遵循 二分法 查找原理,所以要看懂上例中的查找结果,必须要了解什么是二分法查找.( 二分法求零点是什么意思 ps:与vlookup的遍历查询法不同,lookup的查询原理是二分法 ...

  4. 二分法排序_二分法排序算法

    #includeintfun(inta[],intn,intkey){intlow,mid,high;//low.mid.high是三个索引分别指向数组的下标low=0;//low指向数组a[]的第一 ...

  5. c语言二分法查找次数,二分法查找

    二分法查找 算法:二分法查找适用于数据量较大,但是数据需要先排好序 (1)确定该区间的中间位置k (2)将查找的值T与array[k]进行比较.若相等,查找成功返回此位置:否则确定新的查找区域,继续二 ...

  6. 二分法的计算机应用,二分法(数学领域术语)_百度百科

    对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法.[1] ...

  7. python实现二分法查找_python二分法查找

    下面是一段用Python实现的二分法查找代码#encoding=utf-8 import sys def search2(a,m): low = 0 high = len(a) - 1 while l ...

  8. python二分法排序_二分法排序-Python实现

    有一个无序序列[37,99,73,48,47,40,40,25,99,51],先进行排序打印输出,分别尝试插入20/40/41 数值到序列中合适的位置,保证其有序. 1.for 循环实现 第一种实现, ...

  9. java 二分法_java实现二分法的完整代码

    二分法查找,顾名思义就是要将数据每次都分成两份然后再去找到你想要的数据,我们可以这样去想,二分法查找很类似与我们平时玩的猜价格游戏,当你报出一个价格时裁判会告诉你价格相对于真实值的高低,倘若是低了那我 ...

最新文章

  1. 【杂谈】一招,同时可视化18个开源框架的网络模型结构和权重
  2. U3D的飞船太空射击例子中,使用coroutine
  3. 每天干的啥?(2019.3)
  4. python爬虫模拟登录人人网
  5. 论文浅尝 | 变分知识图谱推理:在KG中引入变分推理框架
  6. Javascript - ES6新语法概览
  7. 快速向表中插入大量数据Oracle中append与Nologgin的作用
  8. 【读书笔记《Android游戏编程之从零开始》】10.游戏开发基础(View 游戏框架)
  9. 2020年西南交通大学数据仓库与数据挖掘期末考试题
  10. macos mojave_如何选择退出macOS Mojave Beta
  11. win7保护眼睛的颜色设置方法
  12. 【Ubuntu】查询显卡型号
  13. SQL server Date函数之CONVERT()函数
  14. FPGA组合逻辑训练-三八译码器
  15. 微信朋友圈信息流可能采用算法排序吗?
  16. html----烟花代码
  17. Go组队学习 9.异常处理
  18. 携程React Native实践
  19. 宏转录组方法_Cell:基因表达的改变和群落的更替塑造了全球海洋宏转录组
  20. Linux系统管理上机作业2

热门文章

  1. Cisco IOS的故障恢复方法
  2. 局域网共享问题解决方法!
  3. 发布一个Python小程序:ManHourCalendar
  4. linux 下查mac
  5. SQL Server 自动增长清零
  6. IT业爆发“新人”争夺战
  7. 企业高管眼中的 SAP 和「智慧企业」| 品读中国企业数字化转型的故事
  8. 您不是专业测试人员的10个理由!
  9. hashlib摘要算法模块,logging日志,configparser配置文件模块
  10. 迪普科技:G20峰会背后的网络安全守护者