python排序问题。不知道哪里错了。

2025-06-23 06:23:24
推荐回答(1个)
回答1:

#coding=UTF-8
import sys
import time

def quickSort(lyst):
def recurse(left, right):
k = 3
if ((right + 1) - left) < k:
IS(lyst[left:right + 1], right - left + 1)
#lyst[left:right]表示取的是[left, right)的一个左闭右开区间的数组,所以right应该加1
else:
pivotPosition = partition(lyst, left, right)
recurse(left, pivotPosition - 1);
recurse(pivotPosition + 1, right);

def partition(lyst, left, right):
middle = (left + right) // 2
pivot = lyst[middle]
lyst[middle] = lyst[right]
lyst[right] = pivot

boundary = left
for index in range(left, right):
if lyst[index] < pivot:
lyst[index], lyst[boundary] = lyst[boundary], lyst[index]
boundary += 1
lyst[right], lyst[boundary] = lyst[boundary], lyst[right]
return boundary

recurse(0, len(lyst) - 1)

def IS(a, length):
if length == 0: #这里要加a是空数组的判断
return
minindex = 0
for i in range(1, length, 1):
if a[i] < a[minindex]:
minindex = i
a[0], a[minindex] = a[minindex], a[0]

for i in range(2, length, 1):
j = i
value = a[j]
jm1 = j - 1
while value < a[jm1]:
a[j] = a[jm1]
j = jm1
jm1 = j - 1
a[j] = value

if __name__ == '__main__':
a = [3,4,4,1,2,3,5,7,5,5,2,324,1234,34,63,4,3,4,65,6,2,1,5]
quickSort(a)
print a