PHP数据结构(5)希尔排序及其时间复杂度

希尔排序算法是针对直接插入排序算法的改进。其算法描述为:从一个长度为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/>";
	}
?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章