測試手寫的快速排序,最簡單,無優化的版本居然比python內建函式sort慢了近100倍
import time
import random
defpartition
(arr, low, high)
:# 分割
i =(low -1)
# 最小元素的索引
pivot = arr[high]
for j in
range
(low, high)
:# 當前元素小於或等於pivot
if arr[j]
<= pivot:
i = i +
1 arr[i]
, arr[j]
= arr[j]
, arr[i]
arr[i +1]
, arr[high]
= arr[high]
, arr[i +1]
return
(i +1)
defquicksort
(arr, low, high)
:# 快速排序
if low < high:
# 當起始索引小於末端索引
pi = partition(arr, low, high)
quicksort(arr, low, pi -1)
quicksort(arr, pi +
1, high)
if __name__ ==
'__main__'
: sort_list =
for i in
range(1
,100001):
1,999999999))
# print(sort_list)
n=len(sort_list)
print
("手寫快排排序{}個資料"
.format
(n))
time_start=time.time(
) quicksort(sort_list,
0, n-1)
# >>arr需要排序的列表, 0 起始索引, n陣列長度 #
time_end=time.time(
)print
('running time:{} seconds'
.format
(time_start - time_end)
)print
("sort開始排序{}個資料"
.format
(n))
time_start=time.time(
) sort_list.sort(
) time_end=time.time(
)print
('sort排序結束了running time:{} seconds'
.format
(time_start - time_end)
)
當排序資料為一萬時候,sort速度大概是瞬間完成,二快排速度為0.03秒
Python 實現快速排序和隨機快速排序
直接上 快速排序 coding utf 8 defquicksort a,left,right if leftmid partition a,left,right quicksort a,left,mid 1 quicksort a,mid 1,right defpartition a,left,r...
python快速排序排序 python快速排序
import random def rand n for i in range n yield random.randint 0,1000 建立乙個隨機數列表 def createlist n lists for i in rand n return lists 挖坑法快速排序 def quick ...
關於排序(快速排序)
package com.sw.demo.test 關於快速排序 author song public class testquicksort quicksort arr,0,arr.length 1 快速排序 for int i 0 i arr.length i 快速排序 param arr par...