class Solution: def merge_sort(self, alist): n = len(alist) # 计算数组的长度 if n <= 1: return alist mid = n // 2 left_arr = self.merge_sort(alist[:mid]) # 拆分左侧的数组 right_arr = self.merge_sort(alist[mid:]) # 拆分右侧的数组 left_point, right_point = 0, 0 result = [] # 获取最终数组 while left_point < len(left_arr) and right_point < len(right_arr): if left_arr[left_point] < right_arr[right_point]: result.append(left_arr[left_point]) left_point += 1 else: result.append(right_arr[right_point]) right_point += 1 result += left_arr[left_point:] result += right_arr[right_point:] return result if __name__ == '__main__': alist = [1, 8, 6, 2, 5, 4, 8, 3, 9] s = Solution() res = s.merge_sort(alist) print(res)
归并排序算法实现对链表排序
猜你喜欢
转载自www.cnblogs.com/chenshifang/p/12071288.html
今日推荐
周排行