首页 > 代码库 > [building block] merge sort @ Python
[building block] merge sort @ Python
Here is the basic algorithm about merge sort:
def merge(s1,s2,s): i=j=0 while i + j < len(s): if j == len(s2) or (i < len(s1) and s1[i] < s2[j]): s[i + j] = s1[i] i += 1 else: s[i + j] = s2[j] j += 1 def merge_sort(s): """ Sort the elements of python list s using merge-sort algorithm""" # Time compelxity: O(nlogn), where n = len(s) n = len(s) if n < 2: return # Divide mid = n // 2 s1 = s[:mid] s2 = s[mid:] #conquer (with recursion) merge_sort(s1) merge_sort(s2) # merge results merge(s1,s2,s)
insertion sort: time complexity: O(n^2)
def insertion_sort(A): ”””Sort list of comparable elements into nondecreasing order.””” for k in range(1, len(A)): # from 1 to n-1 cur = A[k] # current element to be inserted j = k # find correct index j for current while j > 0 and A[j-1] > cur: # element A[j-1] must be after current A[j] = A[j-1] j -= 1 A[j] = cur # cur is now in the right place
[building block] merge sort @ Python
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。