上海网站怎么备案,网站规划详细设计怎么写,做的网站百度搜不到,企业电子商务网站建设规划方案题目#xff1a; PHP 实现希尔排序
描述#xff1a;
思路分析#xff1a;希尔排序是基于插入排序的#xff0c;区别在于插入排序是相邻的一个个比较#xff08;类似于希尔中h1的情形#xff09;#xff0c;而希尔排序是距离h的比较和替换。 希尔排序中一个常数因子n PHP 实现希尔排序
描述
思路分析希尔排序是基于插入排序的区别在于插入排序是相邻的一个个比较类似于希尔中h1的情形而希尔排序是距离h的比较和替换。 希尔排序中一个常数因子n原数组被分成各个小组每个小组由h个元素组成很可能会有多余的元素。当然每次循环的时候h也是递减的hh/n。第一次循环就是从下标为h开始。希尔排序的一个思想就是分成小组去排序
function shell_sort(array $arr){// 将$arr按升序排列$len count($arr);$f 3;// 定义因子$h 1;// 最小为1while ($h $len/$f){$h $f*$h 1; // 1, 4, 13, 40, 121, 364, 1093, ...}while ($h 1){ // 将数组变为h有序for ($i $h; $i $len; $i){ // 将a[i]插入到a[i-h], a[i-2*h], a[i-3*h]... 之中 算法的关键)for ($j $i; $j $h; $j - $h){if ($arr[$j] $arr[$j-$h]){$temp $arr[$j];$arr[$j] $arr[$j-$h];$arr[$j-$h] $temp;}//print_r($arr);echo br/; // 打开这行注释可以看到每一步被替换的情形}}$h intval($h/$f);}return $arr;
}