我正在關注合併排序中的維基百科的僞代碼(以及其他網頁,如sortvis.org和sorting-algorithm.com),並看到合併準備使用遞歸。
我很好奇,看看是否有非遞歸的方式來做到這一點。
也許像for each i element in list, i=[i-th element]
。是否有將每個列表元素分隔到自己的列表中的非遞歸方式?
我的印象是遞歸正在保它到一個最小,因爲-in在不良,等於是我想到這個問題。
以下是合併排序的維基百科遞歸部分的僞代碼示例:
function merge_sort(list m)
// if list size is 1, consider it sorted and return it
if length(m) <= 1
return m
// else list size is > 1, so split the list into two sublists
var list left, right
var integer middle = length(m)/2
for each x in m up to middle
add x to left
for each x in m after or equal middle
add x to right
// recursively call merge_sort() to further split each sublist
// until sublist size is 1
left = merge_sort(left)
right = merge_sort(right)
感謝Reddy改進格式。 – Luigi 2012-01-16 10:48:22
這是一個算法問題而不是實現或語言問題,應該相應地標識/標記。 – 2012-01-16 11:30:14