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/>";
	}
?>


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