PHP 直接插入排序
2012-08-16 21:07
127 查看
一般直接插入排序的时间复杂度为O ( n^2 ) ,但是当数列基本有序时,如果按照有数列顺序排时,时间复杂度将改善到O( n )
输出:
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 6 [5] => 7 )
排序过程如下,红色为已排好序部分
<?php #指定部分数组元素全部向后移动一位 function move(Array $arr, $start = null, $end = null) { if(!isset($start) || $start < 0) $start = 0; if(!isset($end) || $end >= count($arr)) $end = count($arr) - 2; #最后只能选到倒数第二个元素 for($i = $end; $i >= $start; $i--) { $arr[$i + 1] = $arr[$i]; } return $arr; } #插入排序,使用同一个数组后移方法实现 function insertSort(Array $arr) { for($i = 1; $i < count($arr); $i++) { #未排序数组,从第二个元素开始 $insertEle = $arr[$i]; #待插入元素 for($j = 0; $j < $i; $j++) { #已排序好数组,从第一个元素开始 if($arr[$j] > $arr[$i]) { #按升序排序 $arr = move($arr, $j, $i - 1); #先将已排序好数组中大于待插入元素的元素全部后移一位 $arr[$j] = $insertEle; #插入待插入元素 break; } } } return $arr; } $arr = array(5, 1, 7, 4, 6, 2); $arr = insertSort($arr); print_r($arr); ?>
输出:
Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 5 [4] => 6 [5] => 7 )
排序过程如下,红色为已排好序部分
![](http://pic002.cnblogs.com/images/2012/399666/2012081620512561.jpg)
相关文章推荐
- PHP四种基础排序算法--冒泡,直接插入,快速和选择排序
- PHP实现直接插入排序
- 直接插入排序(php代码实现)
- PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
- 直接插入排序及PHP实现
- 插入排序 直接插入排序的PHP实现 Straight Insertion Sort
- PHP数据结构之直接插入排序
- PHP之八大排序算法--插入排序(-)直接插入排序
- php实现直接插入排序
- PHP实现排序算法----直接插入排序(Straight Insertion Sort)
- PHP 插入排序 -- 直接插入排序
- PHP数据结构(4) 直接插入排序
- PHP 插入排序 - 直接插入排序
- PHP 直接插入排序
- PHP实现排序算法----直接插入排序(Straight Insertion Sort)
- 排序--直接插入排序算法
- 学生成绩排序(直接插入,冒泡,快排,选择,堆排,2路归并)
- 直接插入排序
- 直接插入排序
- C语言实现直接插入排序和希尔排序