php 冒泡排序和插入排序的学习总结
2018-03-17 15:57
483 查看
1、冒泡排序:对于一个长度为N的数组,我们需要排序 N-1 轮,每 i 轮 要比较 N-i 次。对此我们可以用双重循环语句,外层循环控制循环轮次,内层循环控制每轮的比较次数。
function test(){
$arr= array(1,43,54,62,21,66,32,78,36,76,39);
$len = count($arr);
//该层循环控制 需要冒泡的轮数
for($i =1; $i< $len ; $i++){
//该层循环用来控制每轮 冒出一个数 需要比较的次数
for ($j =0; $j <$len-$i ;$j++ ){
$tep = $arr[$j+1];
if($tep < $arr[$j]){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tep;
}
}
}
return $arr;
function test(){
$arr= array(1,43,54,62,21,66,32,78,36,76,39);
$len = count($arr);
//该层循环控制 需要冒泡的轮数
for($i =1; $i< $len ; $i++){
//该层循环用来控制每轮 冒出一个数 需要比较的次数
for ($j =0; $j <$len-$i ;$j++ ){
$tep = $arr[$j+1];
if($tep < $arr[$j]){
$arr[$j+1] = $arr[$j];
$arr[$j] = $tep;
}
}
}
return $arr;
}2、插入排序:在要排序的一组数中,假设前面的数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。
function test($arr) { $len = count($arr); for($i = < 4000 /span>1; $i < $len; $i++) { //内层循环控制,比较并插入 if($arr[$i-1] > $arr[i]) { for($j = $i-1; $j >= 0; $j--) { //发现插入的元素要小,交换位置,将后边的元素与前面的元素互换 $tmp = $arr[$j+1]; if($tmp < $arr[$j]) { $arr[$j+1] = $arr[$j]; $arr[$j] = $tmp; }else{ //如果碰到不需要移动的元素,由于是已经排序好是数组,则前面的就不需要再次比较了。 break; } } } } return $arr; }
相关文章推荐
- 数据结构与算法:七种排序算法总结(冒泡排序、选择排序、直接插入排序、希尔排序、堆排序、归并排序、快速排序)
- 八大排序算法:简单插入排序、冒泡排序、希尔排序、快速排序、堆排序、归并排序等总结。
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- 比较排序总结——直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序
- 八大排序算法总结之一(冒泡排序,快速排序,直接插入排序,希尔排序)
- php冒泡排序 快速 选择 插入 排序
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- Java 选择排序、冒泡排序、快速排序、直接插入排序、Java自带的排序等方法的使用和总结
- 排序算法总结(冒泡排序、直接插入排序、希尔排序)(python实现)
- 几种内部排序算法总结!(冒泡排序、快速排序、直接插入排序、拆半插入排序、简单选择排序)
- 【学习总结】Java中最常用的三大排序算法-冒泡排序、选择排序、插入排序
- PHP算法学习之“简单的交换排序”,“冒泡排序”以及“改进后的冒泡排序”
- 排序总结JS版(冒泡排序、简单选择排序、快速插入排序、希尔排序、堆排序、快速排序)
- php学习笔记总结(转)
- PHP学习总结(10)——PHP入门篇之自定义网站根目录
- php冒泡排序、快速排序、快速查找、二维数组去重实例分享
- 数据结构 学习笔记(十):排序(上):简单排序(冒泡,插入),希尔 / 选择 / 堆 / 归并 排序
- 算法导论 第2章 算法入门(直接插入排序、希尔排序、冒泡排序、合并排序)
- PHP学习笔记十二【数组排序】
- php学习笔记4--php中GD2扩展库的学习总结