class SortUtils:
    def sort(self, f, s):
        if f == "bubble":
            for i in range(len(s) - 1):
                for j in range(len(s) - i - 1):
                    if s[j] > s[j+1]:
                        s[j], s[j+1] = s[j+1], s[j]
                    print(s)
            #print(s)
        if f == "quick":
            SortUtils.__quick_sort(self, s, 0, len(s)-1)

    def __quick_sort(self, sort_list, start_index, end_index):
        # print(sort_list)
        if start_index < end_index:  # 如果角标左侧小于右侧则开始排序,否则退出
            basic, i, j = sort_list[start_index], start_index, end_index

            while i < j:  # 保证左侧的index一定比右侧的小

                while i < j and basic <= sort_list[j]:  # 基准值比j(右侧)小,那么该值不做任何运算
                    j -= 1  # 角标左移
                while i < j and basic >= sort_list[i]:  # 基准值比i(左侧)大,那么该值不做任何运算
                    i += 1  # 角标右移

                sort_list[i], sort_list[j] = sort_list[j], sort_list[i]
                print("i=" + str(i) + "&&&" + "j=" + str(j) + "$$$" + "sort_list=" + str(sort_list))

            sort_list[i], sort_list[start_index] = sort_list[start_index], sort_list[i]
            SortUtils.__quick_sort(self, sort_list, start_index, i - 1)
            SortUtils.__quick_sort(self, sort_list, i + 1, end_index)


p = SortUtils()
p.sort("bubble", [10, 5, 2, 16, 4, 9, 13, 8])
p.sort("quick", [10, 5, 2, 16, 4, 9, 13, 8])