您的位置:首页 > 理论基础 > 数据结构算法

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/>";
}
?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息