python 合并排序

来源:互联网 发布:淘宝街拍用什么镜头 编辑:程序博客网 时间:2024/06/05 07:58

class MergeSort():
    def __init__(self,array_list, flag = 1):
        self.array_list = array_list
        self.flag = flag        #1升幂0降幂


    def merge_sort(self, low, high):
        if low < high:
            mid = (low + high) / 2
            self.merge_sort(low,mid)
            self.merge_sort(mid +1, high)
            self.merge(low, mid, high)


    def merge(self, low, mid, high):
        list_a = self.array_list[low:mid+1]
        list_b = self.array_list[mid+1:high+1]
        i = 0
        j = 0
        a = len(list_a)
        b = len(list_b)
        while i < a or j < b and low< high:
            if i >= a and j < b:
                self.array_list[low] = list_b[j]
                j += 1
            elif j >= b and i < a:
                self.array_list[low] = list_a[i]
                i += 1
            elif i < a and j < b:
                if self.flag:
                    if list_a[i] < list_b[j]:
                        self.array_list[low] = list_a[i]
                        i += 1
                    else:
                        self.array_list[low] = list_b[j]
                        j += 1
                else:
                    if list_a[i] > list_b[j]:
                        self.array_list[low] = list_a[i]
                        i += 1
                    else:
                        self.array_list[low] = list_b[j]
                        j += 1
            low += 1




if __name__ == '__main__':
    list_result = [3,2,5,9,7,6,1,8]
    sort = MergeSort(list_result,0)
    sort.merge_sort(0,len(list_result)-1)
    #sort.merge_sort(0,4)
    print sort.array_list
原创粉丝点击