關於快速排序和python的sort函式效能比較

2021-10-10 10:57:41 字數 1821 閱讀 2067

測試手寫的快速排序,最簡單,無優化的版本居然比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...