zoukankan      html  css  js  c++  java
  • 快速排序


    快速排序的python实现


    1
    def part(arr,i,j): 2 key=arr[i] 3 while i<j: 4 while( i<j and arr[j]>=key): 5 j-=1 6 if arr[j]<key: 7 arr[i]=arr[j] 8 i+=1 9 while (i<j and arr[i]<=key): 10 i+=1 11 if arr[j]>key: 12 arr[j]=arr[i] 13 j-=1 14 arr[i]=key 15 return i 16 def qsort(arr,i,j): 17 div=part(arr,i,j) 18 if i<j: 19 qsort(arr,i,div-1) 20 qsort(arr,div+1,j) 21 a=[11,23,4,1,4,5,767,21] 22 qsort(a,0,len(a)-1) 23 print a

    http://www.cyrec.org/posts/quick-sort

    更多的参考

    def qsort(arr,start,end):
        l,r = start,end #l,r相当于左右指针
        base = arr[start] #确定比较的对象
        while l < r: 
            while( l < r and arr[r] >= base ):
                r-=1
            if(arr[r] < base):
                arr[l],arr[r] = arr[r],arr[l]
            else:
                break
            while( l < r and arr[l] <= base ):
                l += 1
            if(arr[l] > base):
                arr[l],arr[r] = arr[r],arr[l]
            else:
                break
        if(l-1) > start:
            qsort(arr,start,l-1)
        if(r+1) < end:
            qsort(arr,r+1,end)
    def quickSort(arr):
        if(len(arr) > 1):
            qsort(arr,0,len(arr)-1)
    a = [23,1,32,21,10,2,4,5,7,6,8,3,14,24,62,12,13]
    quickSort(a);
    print a;

    不知为何老是

    list outof range,烦死

    还有一种三行的快排,暂时看不懂

    http://xpython07.duapp.com/coding/code_snippet

    def quick_sort(sort_list):  
         if len(sort_list)<=1:  
             return sort_list  
         return quick_sort([lt for lt in sort_list[1:] if lt<sort_list[0]]) + 
                #这里使用了列表推导式,列表切片和递归返回list中比第一个数小的列表构成左边的列表
                sort_list[0:1] + 
                #这是第一个数放在左列表和右列表的中间
                #之所以使用sort_list[0:1]而不是sort_list[0]是因为sort_list[0:1]返回的是列表,
                #而sort_list[0]返回的是数字,这里是列表相加
                quick_sort([ge for ge in sort_list[1:] if ge>=sort_list[0]])
                #这里与左列表同理
    a = [23,1,32,21,10,2,4,5,7,6,8,3,14,24,62,12,13]
    print quick_sort(a);
  • 相关阅读:
    dotnet 使用 MessagePack 序列化对象
    dotnet 使用 MessagePack 序列化对象
    PHP die() 函数
    PHP defined() 函数
    PHP define() 函数
    PHP constant() 函数
    PHP connection_status() 函数
    查看物理CPU个数、核数、逻辑CPU个数
    CF997C Sky Full of Stars
    dotnet 使用 lz4net 压缩 Stream 或文件
  • 原文地址:https://www.cnblogs.com/fickleness/p/3285132.html
Copyright © 2011-2022 走看看