冒泡等几种排序算法(php)
来源:互联网 发布:2017年9月编程语言排行 编辑:程序博客网 时间:2024/05/05 10:35
1,冒泡排序
第一次循环是排序的次数,也可以理解为已经排好的个数,从数组的开头开始循环,第二次的循环是从尾部开始向上循环,也就是冒泡的过程,遇到排好的就终止(
public function ranger(){ $argc = array(65,45,94,11,16); for ($i = 0; $i<count($argc)-1; $i++){ $flag = false; for ($j = count($argc)-1; $j>$i; $j--){ if($argc[$j]<$argc[$j-1]){ $temp = $argc[$j-1]; $argc[$j-1] = $argc[$j]; $argc[$j] = $temp; $flag = true; } } if(!$flag) break; } print_r($argc); }
2,选择排序,第一次循环,从0开始,往后开始循环,假设当前下标最小,记录当前下标值。第二次循环,从第一个循环的下一个开始($i+1,连锁反应是$j<count($argc)
不需要减一),往后面的排,两两比较选择第二次循环的最小下标,退出第二次循环之后,判断最小下标是否和之前的下标相等,不等则交换数据。
public function ranger(){ $argc = array(65,45,94,11,16); for( $i = 0 ;$i<count($argc)-1;$i++){ $min = $i; for ($j = $i+1;$j<count($argc);$j++){//注意这里不需要减一 if($argc[$j]<$argc[$j-1]){ $min = $j; } } if($min!=$j){ $temp = $argc[$i]; $argc[$i] = $argc[$min]; $argc[$min] = $temp; } } print_r($argc); }
3,插入排序,第一次循环同理,第二遍循环,由于插入排序是默认已经钱n-1个已经排好序,所以第二次循环起始点为$j = $i+1
,往前进行排序,临界点是$j>0
,对里面的数据进行大小判断,并且交换数据。我的理解是插入排序是把下一个数据拉进排序即可。
public function ranger() { $argc = array(65, 45, 94, 11, 16); for($i = 0;$i<count($argc)-1;$i++){ for ($j = $i+1;$j>0;$j--){ if($argc[$j]<$argc[$j-1]){ $temp = $argc[$j-1]; $argc[$j-1] = $argc[$j]; $argc[$j] = $temp; } } } print_r($argc); }
4,快速排序
public function ranger($l,$r,$argc) { $key = $argc[1]; if($l>=$r) return; while ($l<$r){ while ($argc[$r]>=$key) $r--; if ($l<$r){ $argc[$l] = $argc[$r]; $l++; } while ($argc[$l]<$key) $l++; if ($l<$r){ $argc[$r] = $argc[$l]; $r--; } } $argc[$l] = $key; $this->ranger($l,$r-1,$argc); $this->ranger($l+1,$r,$argc); } public function sel(){ $this->ranger(0,4,$argc = array(65, 45, 94, 11, 16)); }
阅读全文
0 0
- 冒泡等几种排序算法(php)
- 几种排序算法 冒泡、快速排序、归并、选择排序等
- 几种排序算法(冒泡排序算法,选择排序算法,快速排序算法,插入排序)
- 总结几种排序算法(一)---冒泡排序
- Java之常见的几种排序算法-插入、选择、冒泡、快排、堆排等 .
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java之常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- 常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
- PHP实现几种基本排序算法--冒泡排序法,快速排序法,选择排序法,插入排序法
- 几种排序算法总结(冒泡、选择、插入、快速)
- 几种排序算法(PHP版)
- php冒泡排序算法
- PHP冒泡排序算法
- 【备忘】微信小程序从入门到实践视频教程
- 博弈论 总结
- 别人Django项目,我如何运行
- The current epoch, 8, is older than the last zxid, 38654705667
- vue的HTML5 History 模式
- 冒泡等几种排序算法(php)
- sqlserver关联更新问题
- VS2015动态库编程基础篇资源汇总
- 加油!
- HDU 1730 Northcott Game (Nim博弈)
- OpenCV基础——threshold函数的使用
- COJ-1216 异或最大值
- 基于Spring的AOP实现自定义annotation操作日志
- js 回调