इस बारे में बहुत उलझन में है क्योंकि मैंने छोटे पर्याप्त टेस्टकेस (एन = 20) के लिए सही लॉजिकल आउटपुट सत्यापित किया है। मैं एन = 10,000 नंबर करने की कोशिश करता हूं और प्रोग्राम बस लटकता है और मुझे समझ में नहीं आता क्यों ... मैंने एल्गोरिदम को जितना संभव हो उतना लागू किया है।पायथन में क्विकसार्ट - कार्यक्रम बड़े इनपुट आकार के लिए लटकता है?
इसके अलावा, मेरी एन = 10k सूची पर sorted(data)
पर कॉल करना लगभग तुरंत काम करता प्रतीत होता है। तो मुझे विश्वास है कि मेरे एल्गोरिदम बस कहीं अटक गया है।
def QuickSort(array):
qsort(array, 0, len(array))
def qsort(arr, left, right):
if ((right - left) < 2):
return
pivotIndex = choosePivot0(arr, left, right)
newPivotIndex = partition(arr, pivotIndex, left, right)
qsort(arr, 0, newPivotIndex)
qsort(arr, newPivotIndex + 1, right)
def partition(arr, pivotIndex, left, right):
swap(arr, pivotIndex, left)
pivot = arr[left]
i = left + 1
for j in range(left+1, right):
if (arr[j] < pivot):
swap(arr, i, j)
i = i + 1
swap(arr, left, i-1) #put pivot back where it belongs
#cobj.count = cobj.count + (right - left - 1) #add m-1 the #of comparisons
return (i-1) #give back where the pivot resides
def swap(array, i, j):
temp = array[i]
array[i] = array[j]
array[j] = temp
def choosePivot0(array, left, right):
return randint(left, right-1) #random
तो मैं बहुत ऐसा क्यों हो रहा हो सकता है के रूप में खो दिया है:
यहाँ कोड है। किसी भी मदद के लिए धन्यवाद।
10k डेटा को सॉर्ट करने में आपका कोड कितना समय लगा? मैंने एक बहुत ही सरल qsort लागू किया, और 'sys.setrecursionlimit (2 ** 30) ', 30k डेटा,' [2, 3, 5] * 10000' को क्रमबद्ध करने में लगभग 20 ~ 30 सेकंड लगते हैं। – xiaowl