首页 > 代码库 > [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