https://leetcode-cn.com/submissions/detail/24096030/
class Solution(object):
def sortColors(self, nums):
"""
:type nums: List[int]
:rtype: None Do not return anything, modify nums in-place instead.
"""
# ------------------------------------------------------------------------
def shellSort(data):
if len(data)<=1: return data
d = len(data)//2
while d > 0:
for i in range(d, len(data)):
tmp = data[i] # tmp:该趟要排的元素
j = i-d # j:指向有序区的最后一个元素
while j >= 0 and tmp < data[j]: # 从后往前,依次与有序区元素比较
data[j+d] = data[j] # 元素后移,腾出空间
j -= d
data[j+d] = tmp # 插入待排元素
d /= 2
# ------------------------------------------------------------------------
return shellSort(nums)
排序类别 | 排序方法 | 时间复杂度 | 空间复杂度 | 稳定性 | 复杂性 | ||
平均情况 | 最坏情况 | 最好情况 | |||||
插入排序 | 希尔排序 | O(Nlog2N) | O(N1.5) |
| O(1) | 不稳定 | 较复杂 |