PHP数据结构(5)希尔排序及其时间复杂度
2014-12-15 22:06
190 查看
希尔排序算法是针对直接插入排序算法的改进。其算法描述为:从一个长度为N的无序数组中取一个小与N的整数d1作为第一次的增量,然后将数组按每相隔d1个元素进行全部记录分组(并不是真实分组)。分完组后现在各组中进行直接插入排序,接着,取出第二个增量么d2<d1重复之前的分组和排序,直至所取的最后一个增量0=
<..<d2<d1。直到最后所有记录放到一组中进行直接插入排序为止(注意:这里的d1是指相隔d1个元素取出一个组成数组而不是将整个数组分成d1个组)。
其PHP语言描述如下:<?php
function shell_sort($array){
$count=count($array);
for($h=$count/2;$h>0;$h=$h/2){
for($i=$h;$i<$count;$i++){
$temp=$array[$i];
for($j=$i-$h;$j>=0 && $temp<$array[$j];$j-=$h){
$array[$j+$h]=$array[$j];
}
$array[$j+$h]=$temp;
}
}
return $array;
}
$arr=array(44,14,55,32,876,32,65,11);
$res=shell_sort($arr);
foreach($res as $key => $value){
echo "key:".($key+1)." value:".$value."<br/>";
}
?>
<..<d2<d1。直到最后所有记录放到一组中进行直接插入排序为止(注意:这里的d1是指相隔d1个元素取出一个组成数组而不是将整个数组分成d1个组)。
其PHP语言描述如下:<?php
function shell_sort($array){
$count=count($array);
for($h=$count/2;$h>0;$h=$h/2){
for($i=$h;$i<$count;$i++){
$temp=$array[$i];
for($j=$i-$h;$j>=0 && $temp<$array[$j];$j-=$h){
$array[$j+$h]=$array[$j];
}
$array[$j+$h]=$temp;
}
}
return $array;
}
$arr=array(44,14,55,32,876,32,65,11);
$res=shell_sort($arr);
foreach($res as $key => $value){
echo "key:".($key+1)." value:".$value."<br/>";
}
?>
相关文章推荐
- PHP数据结构(3) 选择排序机器时间复杂度
- [转]PHP 中巧用数组降低程序的时间复杂度
- PHP 中巧用数组降低程序的时间复杂度
- 常用算法和时间复杂度(php)
- 设计一种数据结构,使得取中位数的时间复杂度在 O(1)
- 面试题:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素,要求函数min,push及pop的时间复杂度都是O(1)
- 一道关于时间复杂度的数据结构题目
- 【算法与数据结构】关于代码运行时间复杂度的计算方法
- 各种数据结构insert和search操作的平均时间复杂度比较
- 时间复杂度和空间复杂度2 - 数据结构和算法04
- PHP快速排序及其时间复杂度
- PHP 用数组降低程序的时间复杂度
- 数据结构:算法的时间复杂度求法
- 数据结构时间复杂度的计算
- 定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。
- PHP 用数组降低程序的时间复杂度
- 数据结构-算法的时间复杂度
- php的strlen函数的时间复杂度
- 【学习笔记】python版希尔排序及其时间复杂度分析
- 重读数据结构之--算法的时间空间复杂度