# coding:utf-8 # 实现对列表中的数进行快速排序 import random # 随机生成一个有1000整数的列表 number = [random.randint(1,1000) for i in range(1000)] # 打印原始列表 print number # 单个列表快速排序函数(返回一次排序后的列表和所选取基数的位置) def paixu(listnumber, i, j, k): while i <= j: while i <= j: if number[j] < number[k]: number[j], number[k] = number[k], number[j] k = j j -= 1 break else: j -= 1 while i <= j: if number[i] > number[k]: number[i], number[k] = number[k], number[i] k = i i += 1 break else: i += 1 return number, k # 主函数 if __name__ == '__main__': start_end_list = [] # 保存左右列表区间 start_end_list.append((0,len(number)-1)) start_end_list_temp = [] # 遍历,直至各个列表区间左右部分相同 while start_end_list: for i in start_end_list: if i[0] == i[1]: continue number, k = paixu(number,i[0],i[1],i[0]) if i[0] <= k-1: start_end_list_temp.append((i[0],k-1)) if k+1 <= i[1]: start_end_list_temp.append((k+1,i[1])) start_end_list = start_end_list_temp start_end_list_temp = [] # 输出快速遍历后的列表 print number