python遞迴排序組合 Python合併遞迴排序

2021-10-11 12:57:42 字數 1956 閱讀 3233

我的merge_sort函式有問題,特別是對右子列表執行遞迴排序。在

對此分配給出的提示是:# if min_ < max_

# calculate mid ((min + max) // 2)

#recursively sort left sub-list

# recursively sort right sub-list

# merge sorted sub-lists

# merge_sort function

:param unsorted_list: the list to be sorted

:param min_: the minimum index to sort from the given list

:param max_: the maximum index to sort from the given list

returns nothing, the original list is modified so no copy is needed

合併排序功能

^$用上面的測試列表測試我的函式可以得到:[1, 2, 4, 12, 20, 17, 3, 11, 18, 1]

這表示左子列表正在工作,但右子列表不工作。在

預期輸出應返回的值:[1, 1, 2, 3, 4, 11, 12, 17, 18, 20]

我的合併函式**:def merge(unsorted_list, min_, max_):

# mid position = start of second sub-list

mid = ((min_ + max_) // 2) + 1

position1 = min_

position2 = mid

position3 = 0

temp =

stop = false

while stop == false and position2 < len(unsorted_list) and position1 < mid:

if unsorted_list[position1] <= unsorted_list[position2]:

position1 += 1

position3 += 1

else:

position2 += 1

position3 += 1

if position1 >= position2:

for k in range(position1, mid + 1):

position2 += 1

position3 += 1

stop = true

if position3 == len(unsorted_list):# temp

for i in range(len(temp)):

unsorted_list[min_] = temp[i]

min_ += 1

elif position2 > max_:

for k in range(position1, mid):

position3 += 1

stop = true

if position3 == len(unsorted_list):# temp

for i in range(len(temp)):

unsorted_list[min_] = temp[i]

min_ += 1

if position3 != len(unsorted_list):

for k in range(position2, len(unsorted_list)):

position3 += 1

if position3 > max_ and position3 == len(temp):

for i in range(len(temp)):

unsorted_list[min_] = temp[i]

min_ += 1

遞迴列印組合

列印組合問題 給出數n和k 1 k n 求出c n,m 的所有組合並列印.例如n 5,k 3,則所有的組合為 5 4 3 5 4 2 5 4 1 5 3 2 5 3 1 5 2 1 4 3 2 4 3 1 4 2 1 3 2 1 如果只是求出組合數,那麼就是簡單的 單向遞迴 問題,因為存在遞推公式 ...

遞迴與組合

福利彩票和體育彩票近兩年比較火暴,相應在vb論壇上大家討論也較多。其實選擇彩票與集合選擇子集相同道理。下面給出一種vb的遞迴演算法 雖然明知存入陣列會加快運算速度,但最終也沒能滿意地實現,請大家多多指教。另外,效率確實不高 option explicit private sub command1 c...

快速排序python遞迴實現

快速排序python def swap list,i,j 位置互換 list i list j list j list i return list def quicksort list,start,end if start end i,j start,end base list i 設定基數 whi...