用python写一个希尔排序
时间: 2024-03-09 15:22:39 浏览: 19
以下是使用Python编写的希尔排序代码:
```python
def shell_sort(arr):
n = len(arr)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
return arr
```
使用示例:
```python
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = shell_sort(arr)
print(sorted_arr) # [11, 12, 22, 25, 34, 64, 90]
```
该算法的时间复杂度为O(nlogn),并且具有较好的性能。
相关问题
用python3写一个希尔排序代码
好的,以下是Python3的希尔排序代码实现:
```python
def shellSort(arr):
n = len(arr)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
return arr
```
使用方法:
```python
arr = [64, 34, 25, 12, 22, 11, 90]
print("原数组为:", arr)
sorted_arr = shellSort(arr)
print("排序后的数组为:", sorted_arr)
```
输出:
```
原数组为: [64, 34, 25, 12, 22, 11, 90]
排序后的数组为: [11, 12, 22, 25, 34, 64, 90]
```
用python写一个希尔伯特排序
希尔排序(Shell Sort)是插入排序的一种更高效的改进版本。它与插入排序的不同之处在于,它会优先比较距离较远的元素。
以下是用 Python 实现希尔排序的代码:
```
def shell_sort(arr):
n = len(arr)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
return arr
# 示例使用
arr = [3, 4, 1, 5, 2, 6]
print(shell_sort(arr))
# 输出: [1, 2, 3, 4, 5, 6]
```