python实例100例讲解python实例100例图像python实例100例pdf
下载地址 https://share.weiyun.com/Fz43Qnru
资料目录 Python练习集100题 100道Python面试题 Python100经典练习题 Python经典题目100道题 Python题库(已收录100道真题) Python100例视频讲解课程 菜鸟教程Python教程100例 130道python练习题,涵盖基础内容的方方面面
举例 归并排序 归并排序,利用了合并有序序列的思想,把一个序列分成A,B两个序列,如果这两个序列是有序的,那么直接合并他们不就可以了么,但是A,B两个序列未必是有序的,没关系,就拿A序列来说,我把A序列再分一次,分成A1,A2,如果A1,A2有序我直接对他们进行合并,A不就变得有序了么,但是A1,A2未必有序啊,没关系,我继续分,直到分出来的序列里只有一个元素的时候,一个元素,就是一个有序的序列啊,这个时候不就可以合并了 这样一层一层的分组,分到最后,一个组里只有一个元素,终于符合合并的条件了,再一层一层的向上合并 完成示例代码: def merge_lst(left_lst,right_lst): left_index, right_index = 0, 0 res_lst = [] while left_index < len(left_lst) and right_index < len(right_lst): # 小的放入到res_lst中 if left_lst[left_index] < right_lst[right_index]: res_lst.append(left_lst[left_index]) left_index += 1 else: res_lst.append(right_lst[right_index]) right_index += 1
# 循环结束时,必然有一个序列已经都放到新序列里,另一个却没有 if left_index == len(left_lst): res_lst.extend(right_lst[right_index:]) else: res_lst.extend(left_lst[left_index:])
return res_lst
def merge_sort(lst): if len(lst) <= 1: return lst
middle = len(lst)//2 left_lst = merge_sort(lst[:middle]) right_lst = merge_sort(lst[middle:]) return merge_lst(left_lst, right_lst)
if __name__ == '__main__': lst = [19,4,2,8,3,167,174,34] print merge_sort(lst)
|