为什么我的快速排序代码不起作用?

2024-04-26 05:00:31 发布

您现在位置:Python中文网/ 问答频道 /正文

即使我得到正确的分区,但输出不是对,是的似乎无法回忆其递归输出。你知道吗

def Quick_Sort(alist):
  if len(alist)>0:
    print(alist)  
    pivot=alist[-1]
    pivotindex=0
    for i in range(len(alist)-1):
        if alist[i]<pivot:

            alist[i],alist[pivotindex]=alist[pivotindex], alist[i]
            pivotindex +=1
    alist[pivotindex],alist[-1] = alist[-1], alist[pivotindex]
    print(alist) 
    Quick_Sort(alist[:pivotindex])
    Quick_Sort(alist[pivotindex+1:])

alist =input('enter list:')
alist=list(map(int,alist.split()))

Quick_Sort(alist)
print(alist)

输出。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。你知道吗

enter list:4 2 5 3 6 9 1
[4, 2, 5, 3, 6, 9, 1]
[1, 2, 5, 3, 6, 9, 4]
[2, 5, 3, 6, 9, 4]
[2, 3, 4, 6, 9, 5]
[2, 3]
[2, 3]
[2]
[2]
[6, 9, 5]
[5, 9, 6]
[9, 6]
[6, 9]
[9]
[9]
[1, 2, 5, 3, 6, 9, 4]

Tags: inforlenifdefrangequicksort
1条回答
网友
1楼 · 发布于 2024-04-26 05:00:31

请尝试以下代码:

def Quick_Sort(alist):
  if len(alist)>0:
    print(alist)  
    pivot=alist[-1]
    pivotindex=0
    for i in range(len(alist)-1):
        if alist[i]<pivot:

            alist[i],alist[pivotindex]=alist[pivotindex], alist[i]
            pivotindex +=1
    alist[pivotindex],alist[-1] = alist[-1], alist[pivotindex]
    print(alist) 
    alist = Quick_Sort(alist[:pivotindex])
    alist = Quick_Sort(alist[pivotindex+1:])
  return alist

alist =input('enter list:')
alist=list(map(int,alist.split()))

Quick_Sort(alist)
print(alist)

相关问题 更多 >