以列表中的任意一个数为基准(一般选择列表中的第一个数), 将列表分为左、右(前、后)两个子列表:左边子列表的数要比基准 数小,右边子列表的数要比基准数大。然后继续把左边子列表和右边 子列表按同样的方法继续分解、比较,一直到分无可分为止。然后按 照左边子列表(比基准数小)+基准数+右边子列表(比基准数大)的 方式连接起来。最后得到一个有序的数列。
- import timeit
- import random
-
- def randomList(n):
- '''返回一个长度为n的整数列表,数据范围[0,1000) '''
- iList = []
- for i in range(n):
- iList.append(random.randrange(1000))
- return iList
-
-
-
- def quickSort(iList):
- if len(iList) <= 1:
- return iList
- left = []
- right = []
- for i in iList[1:]:
- if i <= iList[0]:
- left.append(i)
- else:
- right.append(i)
- return quickSort(left) + [iList[0]] + quickSort(right)
-
- if __name__ == "__main__":
- iList = randomList(20)
- print(iList)
- print(quickSort(iList))
- # print(timeit.timeit("quickSort(iList)", "from __main__ import quickSort,iList", number=100))