zoukankan      html  css  js  c++  java
  • python Quicksort demo

    __author__ = 'student'
    
    '''
    quicksort
    step 1, choose one pivot, such as pivot=la[0]
    step 2, scan the data from right side, find data less than pivot, then swap this with pivot
    pivot=1  [4] 5 7 3 20 9 [j]
    then scan from left side, find data greater than pivot, then swap the position j and i
    4 [] 7 3 20 9 5
    when i>=j then finish one loop. then put the pivot in the i;
     all data are dived by pivot now. left is less than pivot and right are greater than pivot.
    think step by step then do it and try something
    step 3. then you have two parts to sort, left part and right part.
    recursive  call this method to sort
    '''
    import random
    
    def quicksort(la,l,r):
        if l>=r :
            return
        left=l;right=r
        pivot=la[left]
        while left < right:
            while left<right and la[right]>pivot:
                right-=1
            if left<right :
                la[left]=la[right]
                left+=1
            while left<right and la[left]<pivot:
                left+=1
            if left<right:
                la[right]=la[left]
        la[left]=pivot
        quicksort(la,l,left-1)
        quicksort(la,left+1,r)
    
    def quicksort2(la):
        if len(la)<=1:
            return la
        return quicksort2([lt for lt in la[1:] if lt<la[0]])+ la[0:1]+quicksort2([ge for ge in la[1:] if ge>=la[0]])
    
    import sys
    sys.setrecursionlimit(999)
    
    la=[]
    def generatenumbers(la,len):
        for x in range(len):
            la.extend([random.randint(1,50)])
    generatenumbers(la,1000)
    print la
    quicksort(la,0,len(la)-1)
    print la
  • 相关阅读:
    poj 3662 Telephone Lines
    费马小定理证明
    CodeForces 1058 F Putting Boxes Together 树状数组,带权中位数
    共价大爷游长沙 lct 维护子树信息
    牛客暑假多校 F RIKKA with Line Graph
    牛客暑假多校 H Prefix sum
    HDU-6437 Videos
    模板汇总——AC自动机
    模板汇总——逆元
    模板汇总——LCT
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/4489805.html
Copyright © 2011-2022 走看看