赞
踩
描述:
function shellSort(array $list) { $length = count($list); $step = 2; $gap = intval($length/$step); while($gap > 0){ for($gap_i = 0; $gap_i < $gap; $gap_i++){ for($i = $gap_i; $i < $length; $i+=$gap){ $temp = $list[$i]; for($j = $i - $gap; $j >= 0; $j-=$gap){ if($temp < $list[$j]){ $list[$j+$gap] = $list[$j]; $list[$j] = $temp; }else{ break; } } } } } return $list; } $list = array(3, 6, 2, 4, 10, 1 ,9, 8, 5, 7); var_dump(shellSort($list)); /** * 第1趟, gap = 5 * 分成了两个数组:(对应下标元素进行比较) * (3, 6, 2, 4, 10) (1, 9, 8, 5, 7) * 交换后的过程: * (1, ...) (3, ...) * (1, 6, ...) (3, 9, ...) * (1, 6, 2, ...) (3, 9, 8, ...) * (1, 6, 2, 4, ...) (3, 9, 8, 5, ...) * (1, 6, 2, 4, 7) (3, 9, 8, 5, 10) * 第2趟,gap = 2 * 分成了五个数组 * (1, 6) (2, 4) (7, 3) (9, 8) (5, 10) * 交换过程 * (1, ...) (2, ...) (5, ...) (7, ...) (9, ...) * (1, 3) (2, 4) (5, 6) (7, 8) (9, 10) * 第3趟, gap = 1 * 元素比较 * 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 */
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。