• 排序算法-(冒泡、选择、插入算法)


    运行效率较慢的三大排序算法:冒泡、选择与插入算法,时间复杂度都为O(n2),运行效率较慢。

    #python 代码实现如下所示:

    li=[2,1,4,5,7,8,9,5,3]
    #冒泡算法(升序算法)O(n2)
    import random
    from cal_time import *
    @cal_time
    def bubble_sort(li):
    for i in range(len(li)-1): #第i趟
    exchange=False
    for j in range(len(li)-i-1): #无序区域为n-i-1
    if li[j]>li[j+1]:
    li[j],li[j+1]=li[j+1],li[j]
    exchange=True
    #print(li)
    if not exchange:
    return li
    #li=[random.randint(0,10000) for i in range(1000)]
    print(li)
    print("冒泡排序算法的排序结果为:{}".format(bubble_sort(li)))

    #选择排序(每次遍历找最小值,然后放各自的位置上去)
    #1-1不足选择排序算法:占用内存,复杂度高O(n2)
    def select_sort_simple(li):
    li_new=[] #一个重新的新列表,多出来一个内存占用,不推荐使用
    for i in range(len(li)):
    min_val=min(li) #复杂度为O(n)
    li_new.append(min_val)
    li.remove(min_val) #复杂度为O(n)
    return li_new
    print("选择排序算法的排序结果为:{}".format(select_sort_simple(li)))

    #选择算法时间复杂度为O(n2)
    def select_sort(li):
    for i in range(len(li)-1): #i是第i趟,总共需要n-1趟
    min_loc=i
    for j in range(i+1,len(li)):
    if li[j]<li[min_loc]:
    min_loc=j
    li[i],li[min_loc]=li[min_loc],li[i]
    print(li)
    li=[2,1,4,5,7,8,9,5,3]
    print(li)
    select_sort(li)

    #插入排序算法O(n2)
    def insert_sort(li):
    for i in range(1,len(li)): #i表示摸到的次序和牌
    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
    print(li)

    li=[2,1,4,5,7,8,9,5,3]
    print(li)
    insert_sort(li)

    运行效果如下:











  • 相关阅读:
    执行预定义命令
    利用jemalloc优化mysql
    ssh增加密匙登录
    vsftpd增加ssl安全验证
    利用脚本获取mysql的tps,qps等状态信息
    innodb_buffer_pool_size 大小建议
    linux多核cpu下的负载查看
    DDoS deflate+iptables防御轻量级ddos攻击
    CentOS通过日志反查入侵
    shell读取文件每行,并执行命令
  • 原文地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/12401563.html
Copyright © 2020-2023  润新知