快排代码:
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)
#创建10000个数
arr = list(range(10000))
#数组反转,为了排序的时候递归多一点
arr.reverse()
#排序
mysqort(arr,0,9999)
#堆栈溢出
print(arr)
很惊讶10000个数都做不了排序,网上有说递归深度有做限制,sys.setrecursionlimit(100000),这里也设置了,为什么10000个数的快排,会堆栈溢出?
又去写了一个递归:
import sys
sys.setrecursionlimit(100000000)
def rec(n):
print(n)
rec(n+1)
rec(1)
print到8657开始报堆栈溢出问题
python之外还有一个os限制着数量呢,这个应该能简单估计下你系统的限制:
http://svn.python.org/project...
https://stackoverflow.com/que...