• 用快速排序的原理自定义多级排序函数


    import random
    
    def randomlist(n):
       return [random.randint(0,100) for i in range(n)]
    
    def isorted(arr,key=None,reverse=False):
       if len(arr)<2:
          return arr
       small=[]
       big=[]
       line=arr[0]
       if key is not None:
          for ar in arr[1:]:
             if key(ar)>key(line):
                big.append(ar)
             else:
                small.append(ar)
       else:
          for ar in arr[1:]:
             if ar>line:
                big.append(ar)
             else:
                small.append(ar)
       if reverse:
          return isorted(big,key,reverse)+[line]+isorted(small,key,reverse)
       return isorted(small,key,reverse)+[line]+isorted(big,key,reverse)
    
    
    arr=randomlist(10)
    
    print 'raw list:'
    print arr
    print 'sorted list 1:'
    print isorted(arr)
    print 'sorted list 2:'
    print isorted(arr,None,1)
    
    arr=zip(randomlist(10),randomlist(10))
    
    print 'raw list:'
    print arr
    print 'sorted list 1:'
    print isorted(arr,lambda x:x[0],0)
    print 'sorted list 2:'
    print isorted(arr,lambda x:x[1],1)

    结果:

    >>> 
    raw list:
    [75, 81, 11, 96, 83, 44, 24, 50, 71, 77]
    sorted list 1:
    [11, 24, 44, 50, 71, 75, 77, 81, 83, 96]
    sorted list 2:
    [96, 83, 81, 77, 75, 71, 50, 44, 24, 11]
    raw list:
    [(58, 27), (76, 21), (32, 17), (3, 76), (73, 64), (74, 24), (3, 32), (24, 74), (18, 11), (9, 53)]
    sorted list 1:
    [(3, 32), (3, 76), (9, 53), (18, 11), (24, 74), (32, 17), (58, 27), (73, 64), (74, 24), (76, 21)]
    sorted list 2:
    [(3, 76), (24, 74), (73, 64), (9, 53), (3, 32), (58, 27), (74, 24), (76, 21), (32, 17), (18, 11)]
    >>> 
  • 相关阅读:
    Windows共享上网的详细设置
    使用树莓派实现微信远程监控
    数据结构——队列及循环队列
    springmvc web 大文件上传源代码
    springboot web 大文件上传源代码
    jsp web 大文件上传源代码
    csharp web 大文件上传源代码
    c# web 大文件上传源代码
    .net web 大文件上传源代码
    asp.net web 大文件上传源代码
  • 原文地址:https://www.cnblogs.com/xiangnan/p/3383407.html
Copyright © 2020-2023  润新知