zoukankan      html  css  js  c++  java
  • python算法——快速排序算法

    归并排序

     1 def merge(li, low,mid, high):
     2     i = low
     3     j = mid+1
     4     ltmp = []
     5     while i<=mid and j <=high:
     6         if li[i]<li[j]:
     7             ltmp.append(li[i])
     8             i += 1
     9         else:
    10             ltmp.append(li[j])
    11             j += 1
    12     while i<=mid:
    13         ltmp.append(li[i])
    14         i += 1
    15     while j<=high:
    16         ltmp.append(li[j])
    17         j += 1
    18     li[low:high+1]=ltmp
    19 # li = [1,5,7,8,9,2,5,7,10]
    20 # merge(li,0,len(li)//2,len(li)-1)
    21 # 本算法时间复杂度为O(n*logn)
    22 def merge_sort(li,low,high):
    23     if low<high:
    24         mid = (low+high)//2
    25         merge_sort(li,low,mid)
    26         merge_sort(li,mid+1,high)
    27         merge(li,low,mid,high)
    28 
    29 
    30 import time
    31 def timer(func):
    32     def inner(*args,**kwargs):
    33         start = time.time()
    34         ret = func(*args,**kwargs)
    35         end = time.time()
    36         print(end-start)
    37         return ret
    38     return inner
    39 @timer
    40 def outer(li,low,high):
    41     merge_sort(li,low,high)
    42 # import random
    43 # li = list(range(1000))
    44 # random.shuffle(li)
    45 # print(li)
    46 # outer(li,0,len(li)-1)   # 1000个数据费时0.004s
    47 # print(li)
    48 
    49 # li = list(range(10000))
    50 # random.shuffle(li)
    51 # print(li)
    52 # outer(li,0,len(li)-1)   # 10000个数据费时0.05s
    53 # print(li)
  • 相关阅读:
    Python使用struct处理二进制
    ProtoBuf与Python结合使用初步
    智能指针shared_ptr的用法
    C++模板
    mac 安装protobuf,并编译为java,c++,python
    java的HashCode方法
    JVM的内存结构
    HashSet与TreeSet的比较
    面向对象的特征有哪些方面?
    Collection与Collections的区别是什么?
  • 原文地址:https://www.cnblogs.com/liuyankui163/p/8342573.html
Copyright © 2011-2022 走看看