목록을 정렬하는 정렬 알고리즘 병합

클래스 솔루션 :
     데프 merge_sort (자기, alist) :
        N- = LEN (alist)   # 배열의 길이를 계산 
        IF N - <= 1. :
             리턴 alist
        MID = N-2 // 
        left_arr = self.merge_sort (alist [: MID])   #의 배열을 분할하는 좌측 
        right_arr = self.merge_sort (alist를 [MID :])   # 오른쪽 분할 어레이 
        left_point, right_point = 0, 0
        결과 = []   # 获取最终数组
        동안 left_point <LEN (left_arr)  right_point < LEN (right_arr)
             경우 left_arr [left_point] < right_arr [right_point]
                result.append (left_arr [left_point])
                left_point + = 1
             다른 사람 :
                result.append (right_arr [right_point])
                right_point + = 1

        결과 + = left_arr [left_point을 :]
        결과 + = : right_arr [right_point]
         리턴 결과


경우  __name__ == ' __main__ ' :
    alist = [1, 8, 6, 2, 5, 4, 8, 3, 9 ]
    S = 솔루션 ()
    입술 = s.merge_sort (alist)
     인쇄 (해상도)

추천

출처www.cnblogs.com/chenshifang/p/12071288.html