程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> python高速排序

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):
        lists.append(i)
    return lists
#挖坑法高速排序
def quick_sort(lists,l,r):
    if(l<r):
        #x是選取的pivot基准值,然後把數據大於基准值的排到右邊。小於基准值的排到左邊
        i,j,x=l,r,lists[l]
        while(i<j):
            #j從右邊開始遍歷,找到j<x的地方,並跟lists[i]交換。
            while(i<j and lists[j]>=x):
                j-=1
            if(i<j):
                lists[i]=lists[j]
                i+=1
            #i從左邊開始遍歷,找到j>x的地方。並跟lists[j]交換
            while(i<j and lists[i]<=x):
                i+=1
            if(i<j):
                lists[j]=lists[i]
                j-=1
        #此時,i已經大於等於j了。也就是說i左邊的都小於x,右邊都大於x,所以如今把i填入x,接下來就遞歸排序
        lists[i]=x
        quick_sort(lists,l,i-1)
        quick_sort(lists,i+1,r)
        
lists=createList(1000)
print lists
quick_sort(lists,0,len(lists)-1)
print lists

    
    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved