鍍金池/ 問答/Python/ python快速排序,1萬個數(shù),stack overflow

python快速排序,1萬個數(shù),stack overflow

快排代碼:

import sys
sys.setrecursionlimit(100000)
def mysqort(arr, low, high):

    if low >= high:
        return
    i = low
    j = high
    base = arr[low]
    while(i<j):
        while(i<j and arr[j] > base):
            j -= 1
        if(i<j):
            arr[i] = arr[j]
            i = i + 1
        while(i<j and arr[i] < base):
            i += 1
        if(i<j):
            arr[j] = arr[i]
            j -= 1
    arr[i] = base
    mysqort(arr,low,i-1)
    mysqort(arr,i+1,high)
#創(chuàng)建10000個數(shù)
arr = list(range(10000))
#數(shù)組反轉,為了排序的時候遞歸多一點
arr.reverse()
#排序
mysqort(arr,0,9999)
#堆棧溢出
print(arr)

很驚訝10000個數(shù)都做不了排序,網(wǎng)上有說遞歸深度有做限制,sys.setrecursionlimit(100000),這里也設置了,為什么10000個數(shù)的快排,會堆棧溢出?
又去寫了一個遞歸:

import sys
sys.setrecursionlimit(100000000)
def rec(n):
    print(n)
    rec(n+1)
rec(1)

print到8657開始報堆棧溢出問題

回答
編輯回答
舊酒館

python之外還有一個os限制著數(shù)量呢,這個應該能簡單估計下你系統(tǒng)的限制:
http://svn.python.org/project...

https://stackoverflow.com/que...

2018年1月17日 19:21