• 各种排序算法


    import sys
    sys.setrecursionlimit(1000000) # 设定递归

    冒泡排序 (************************)

    时间复杂度:O(n^2)

    def Bubble_sort(li):
    for i in range(len(li)-1):
    for j in range(len(li)-1-i):
    if li[j] > li[j+1]:
    li[j], li[j+1] = li[j+1], li[j]

    选择排序

    时间复杂度:O(n^2)

    def select_sort(li):
    for i in range(len(li)):
    minLoc = i ###i = 0
    for j in range(i+1, len(li)):
    if li[j] < li[minLoc]:
    li[j], li[minLoc] = li[minLoc], li[j]

    插入排序

    时间复杂度: O(n^2)

    def insert_sort(li):
    for i in range(1, len(li)):
    tmp = li[i]
    j = i - 1
    while j >=0 and li[j] > tmp:
    li[j+1] = li[j]
    j = j - 1
    li[j+1] = tmp

    def partition(li, left, right):
    tmp = li[left]
    while left < right:
    while left < right and li[right] >= tmp:
    right = right - 1
    li[left] = li[right]
    while left < right and li[left] <= tmp:
    left = left + 1
    li[right] = li[left]
    li[left] = tmp

    return left
    

    快速排序

    时间复杂度:O(nlogn)

    def quick_sort(li, left, right):
    if left < right:
    mid = partition(li, left, right)
    quick_sort(li, left, mid-1)
    quick_sort(li, mid+1, right)

    import time,random
    li = [random.randint(1,100) for _ in range(100000)]
    start = time.time()
    quick_sort(li, 0, len(li)-1)
    cost = time.time() - start
    print('quick_sort:%s' % (cost))

    import time,random
    li = [random.randint(1,100) for _ in range(100000)]
    start = time.time()
    Bubble_sort(li)
    cost = time.time() - start
    print('bubble_sort:%s' % (cost))

    import time,random
    li = [random.randint(1,100) for _ in range(100000)]
    start = time.time()
    insert_sort(li)
    cost = time.time() - start
    print('insert_sort:%s' % (cost))

  • 相关阅读:
    jdbc连接2(不可以注入)
    大白dmeo (转的)
    管家婆系统
    RMQ求最值
    Codeforces 837E Vasya's Function 数论 找规律
    Codeforces 837D
    poj 1655 找树的重心
    HDU 4055 Number String 计数DP
    Summer training round2 #7 (Training #23)
    Summer training round2 #6 (Training #22)
  • 原文地址:https://www.cnblogs.com/yuelinyan/p/12099894.html
Copyright © 2020-2023  润新知