快速排序

#快速排序

import random
import time

def quick_sort(array,start,end):
if start >= end:
return
k = array[start]
left_flag = start
right_flag = end

while left_flag < right_flag:
while left_flag < right_flag and array[right_flag] > k: #代表要继续往左边移动小旗子
right_flag -=1
tmp = array[left_flag]
array[left_flag] = array[right_flag]
array[right_flag] = tmp

while left_flag < right_flag and array[left_flag] <= k: #代表左边小旗子开始向右移动
left_flag +=1
#上面的循环一跳出,代表左边小旗子现在所处的位置的值是比k大的
tmp = array[left_flag]
array[left_flag] = array[right_flag]
array[right_flag] = tmp

#开始把问题分半
quick_sort(array,start,left_flag-1)
quick_sort(array,left_flag+1,end)

if __name__=='__main__':
array = []
for i in range(50000):
array.append(random.randrange(100000))

time_start = time.time()
quick_sort(array,0,len(array)-1)
time_end = time.time()
print (array)
print ("cost:",time_end-time_start)

#快速排序:0.031秒(5000个数字)0.047s(10000个数字)0.11s(20000个数字)0.33s(50000个数字)
posted @ 2018-04-25 09:52  Paco_Pig  阅读(143)  评论(0)    收藏  举报