• 1399/03/14

خروجی ندادن کد :

استاد این قطعه کد چرا خروجی نمیده؟
def partition(array, begin, end):
    pivot_idx = begin
    for i in xrange(begin+1, end+1):
        if array[i] <= array[begin]:
            pivot_idx += 1
            array[i], array[pivot_idx] = array[pivot_idx], array[i]
    array[pivot_idx], array[begin] = array[begin], array[pivot_idx]
    return pivot_idx

def quick_sort_recursion(array, begin, end):
    if begin >= end:
        return
    pivot_idx = partition(array, begin, end)
    quick_sort_recursion(array, begin, pivot_idx-1)
    quick_sort_recursion(array, pivot_idx+1, end)

def quick_sort(array, begin=0, end=None):
    if end is None:
        end = len(array) - 1
    
return quick_sort_recursion(array, begin, end)
  • 1399/03/15
  • ساعت 11:16

با سلام شما تابع های تعریفی را فراخوانی نکرده اید


  • 1399/03/15
  • ساعت 15:12

خب ببنید این سوال درمورد مرتب سازی سریع از طریق محور گیری یه عدد بوده

الان دقیقن نمیدونم کودوم تابع باید فراخوانی کنم 

چون هر کار میکنم و هر کودوم فراخوانی میکنم اررور میده


  • 1399/03/18
  • ساعت 09:25

کد شما چند اشکال دارد 

1- شما از داده int ایندکس خواستید
def partition(array, begin, end):
    pivot_idx = begin
    for i in range(begin+1, end+1):
        if array[i] <= array[begin]:
            pivot_idx += 1
            array[i], array[pivot_idx] = array[pivot_idx], array[i]
    array[pivot_idx], array[begin] = array[begin], array[pivot_idx]
    return pivot_idx

def quick_sort_recursion(array, begin, end):
    pivot_idx = begin
    if begin >= end:
        pivot_idx = partition(array, begin, end)
        qsr_2 =quick_sort_recursion(array, begin, pivot_idx-1)
        qsr =quick_sort_recursion(array, pivot_idx+1, end)
        return pivot_idx,qsr,qsr_2
    

def quick_sort(array, begin=0, end=None):
    if end is None:
        end = len(array) - 1
    return quick_sort_recursion(array, begin, end)

partition('2','3','4')
quick_sort('1','7','3')
quick_sort_recursion('2','4','6')
حالت کمی اصلاح شده

logo-enamadlogo-samandehi