归并算法和二分查找是加深对递归思想理解的很好的算法,两者可以结合着看,二分查找是进入函数都先做逻辑处理,然后再进行下一轮递归,递归到条件满足后逐层推出函数。
归并排序是进入函数后先递归进入下一层函数,直到递归到条件满足后逐层推出函数,推出函数前进行逻辑处理。
def guibing(data, l, r): if(l < r): m = (l+r)/2 guibing(data, l, m) guibing(data, m+1, r) tmp = [x for x in data] lt = m rt = r while(lt >= l and rt > m): if(tmp[lt] > tmp[rt]): data[r] = tmp[lt] r -= 1 lt -= 1 else: data[r] = tmp[rt] r -= 1 rt -= 1 while(lt >= l): data[r] = tmp[lt] r -= 1 lt -= 1 while(rt > m): data[r] = tmp[rt] r -= 1 rt -= 1 else: return