php代码:
<?php
function shellSort(array $arr)
{
$count = count($arr);
$gap = floor($count / 2);
while ($gap > 0){
for ($j = $gap; $j < $count; $j++) {
$tmp = $arr[$j]; //记录要比较的值
$k = $j;
while ($k >= $gap and $tmp < $arr[$k - $gap]) {
//交换
$arr[$k] = $arr[$k - $gap];
$k -= $gap;
}
$arr[$k] = $tmp;
}
$gap = floor($gap / 2);
}
return $arr;
}
print_r(shellSort([11, 3, 5, 10, 16, 7, 32, 83, 23, 54, 29, 96]));
python代码:
def shell_sort(arr: List[int]):
gap = len(arr) // 2
while gap > 0:
for i in range(gap, len(arr)):
temp = arr[i]
j = i
while j >= gap and temp < arr[j - gap]:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
print(arr)
shell_sort([11, 3, 5, 10, 16, 7, 32, 83, 23, 54, 29, 96])