版权声明:——转载请留言询问—— https://blog.csdn.net/weixin_44344462/article/details/87980794
比对结果
随机数组长度为
1000
时:Time for heer is 0.08317700000000006
Time for quick is 0.004468999999999945
随机数组长度为
10000
时:Time for heer is 8.282509
Time for quick is 0.055301000000000045
随机数组长度为
20000
时:Time for heer is 34.407452
Time for quick is 0.11792299999999756
可以看出快速排序在随机序列的排序性能上要优于Sedgewick递增序列的希尔排序
Sedgewick增量序列的希尔排序
def heerSort(ar):
Sedgewick = [1, 5, 19, 41, 109, 209, 505, 929, 2161,
3905, 8929, 16001, 36289, 64769, 146305,
260609, 587521, 1045505, 2354689, 4188161,
9427969, 16764929, 37730305, 67884289,
150958081, 268386305, 603906049, 1073643521]
i = 0
keeper = 0
while i < 28 :
if Sedgewick[i] > len(ar):
keeper = i - 1
break
i += 1
while keeper >= 0:
i = Sedgewick[keeper]
j = i
while j < len(ar):
p = j
temp = ar[p]
while p > 0 and ar[p - i] > temp:
ar[p] = ar[p - i]
p -= i
ar[p] = temp
j += i
keeper -= 1
快速排序
def quickSort(ar):
if len(ar) == 1 or len(ar) == 0:
return
else:
base = ar[0]
left = 0
right = len(ar) - 1
while left != right:
while ar[right] >= base and left != right:
right -= 1
ar[left] = ar[right]
while ar[left] <= base and left != right:
left += 1
ar[right] = ar[left]
ar[left] = base
quickSort(ar[0:left])
quickSort(ar[left+1: len(ar)])