zoukankan      html  css  js  c++  java
  • 算法

    算法(冒泡,选择,插入)

    #冒泡排序    时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(len(li)-1):#i是趟数
            for j in range(len(li)-i-1):#j是指针
                if li[j] > li[j+1]:
                    li[j],li[j+1] = li[j+1],li[j]
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
    
    #选择排序         时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(len(li)-1):
            min_loc = i
            for j in range(i+1,len(li)):
                if li[j] < li[min_loc]:
                    min_loc = j
            if min_loc != i:
                li[i],li[min_loc] = li[min_loc],li[i]
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
    
    #插入排序          时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(1,len(li)):#i 代表拿到牌的下标
                tmp = li[i]
                j = i-1           #j是手里最后一张牌的下标
                while True:
                    if j < 0 or tmp >= li[j]:
                        break
                    li[j+1] = li[j]
                    j-=1
                li[j+1] = tmp
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
    #冒泡排序    时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(len(li)-1):#i是趟数
            for j in range(len(li)-i-1):#j是指针
                if li[j] > li[j+1]:
                    li[j],li[j+1] = li[j+1],li[j]
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
    
    #选择排序         时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(len(li)-1):
            min_loc = i
            for j in range(i+1,len(li)):
                if li[j] < li[min_loc]:
                    min_loc = j
            if min_loc != i:
                li[i],li[min_loc] = li[min_loc],li[i]
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
    
    #插入排序          时间复杂度是o(n²)   空间复杂度是o(1)
    import random as rd
    def a_sort(li):
        for i in range(1,len(li)):#i 代表拿到牌的下标
                tmp = li[i]
                j = i-1           #j是手里最后一张牌的下标
                while True:
                    if j < 0 or tmp >= li[j]:
                        break
                    li[j+1] = li[j]
                    j-=1
                li[j+1] = tmp
        return li
    li = list(range(100))
    rd.shuffle(li)
    print(li)
    print(a_sort(li))
  • 相关阅读:
    POJ1028 Web Navigation【堆栈+模拟】
    UVa10276 HDU1329 ZOJ1239 Hanoi Tower Troubles Again!【递推函数+打表】
    UVALive5369 UVa732 HDU1515 ZOJ1004 Anagrams by Stack【DFS+堆栈】
    HDU5776 sum【前缀和+模除】
    POJ1844 Sum【水题+数学题】
    AOJ0558 Cheese【BFS】
    POJ3009 Curling 2.0【DFS】
    HDU1163 Eddy's digital Roots(解法二)【快速模幂+九余数定理】
    HDU1210 Eddy's 洗牌问题【递推函数+模拟】
    Vijos P1571 笨笨的导弹攻击【最长上升子序列+DP】
  • 原文地址:https://www.cnblogs.com/george92/p/10020398.html
Copyright © 2011-2022 走看看