• 各种算法


    斐波那锲数

    def
    func(arg1,arg2): if arg1 == 0: print arg1, arg2 arg3 = arg1 + arg2 print arg3 func(arg2, arg3) func(0,1) Demo

    冒泡排序

    冒泡排序是排序中经典排序之一,它利用相邻元素比较并进行位置的互换...

    需求:请按照从小到大对列表 [13, 22, 6, 99, 11] 进行排序

    思路:相邻两个值进行比较,将较大的值放在右侧,依次比较!

    li = [13, 22, 6, 99, 11]
    
    for m in range(4):     # 等价于 #for m in range(len(li)-1):
        if li[m]> li[m+1]:
            temp = li[m+1]
            li[m+1] = li[m]
            li[m] = temp
    
    第一步
    li = [13, 22, 6, 99, 11]
    
    for m in range(4):     # 等价于 #for m in range(len(li)-1):
        if li[m]> li[m+1]:
            temp = li[m+1]
            li[m+1] = li[m]
            li[m] = temp
    
    for m in range(3):     # 等价于 #for m in range(len(li)-2):
        if li[m]> li[m+1]:
            temp = li[m+1]
            li[m+1] = li[m]
            li[m] = temp
    
    for m in range(2):     # 等价于 #for m in range(len(li)-3):
        if li[m]> li[m+1]:
            temp = li[m+1]
            li[m+1] = li[m]
            li[m] = temp
    
    for m in range(1):     # 等价于 #for m in range(len(li)-4):
        if li[m]> li[m+1]:
            temp = li[m+1]
            li[m+1] = li[m]
            li[m] = temp
    print li
    
    第二步
    li = [13, 22, 6, 99, 11]
    
    for i in range(1,5):
        for m in range(len(li)-i): 
            if li[m] > li[m+1]:
                temp = li[m+1]
                li[m+1] = li[m]
                li[m] = temp
    
    第三步

    选择排序,顾名思义先 创建一个特殊的变量:

    • 选择第一个值的索引赋值给特殊变量,然后循环其他索引并进行值的比较,如果特殊变量对应的值 > 循环的值,那么将当前值的索引放入变量中,继续向后比较
    • 选择第二个值的索引赋值给特殊变量,...
    def select_sort(args):
        """
        选择排序
        :param args: 要进行排序的列表
        :return: 排序之后的列表
        """
        for j in range(0, len(args)-1):
     
            min_val_index = j
            for i in range(j+1, len(args)):
                if args[i] < args[min_val_index]:
                    min_val_index = i
     
            temp = args[min_val_index]
            args[min_val_index] = args[j]
            args[j] = temp
     
        return args
     
     
    lis = [10, 77, 12, 43, 88, 1, 8, 8, 2, 3, 6]
     
    result = select_sort(lis)
     
    print(result)

    插入排序

    插入排序有两个特点:

    • 从前向后两两比较
    • 永远保证左边是有序的

    其实插入排序就是维护一个有序的序列,并且有一个人在不停的抛出新的值,然后有序的序列开始去检测新值,将其添加到有序序列中的合法位置。

    def insert_sort(args):
        """
        插入排序
        :param args: 要排序的列表
        :return: 排序成功后的列表
        """
        for i in range(1, len(args)):
     
            for j in range(i-1, -1, -1):
                if args[j] > args[j+1]:
                    temp = args[j]
                    args[j] = args[j+1]
                    args[j+1] = temp
                else:
                    break
     
        return args
  • 相关阅读:
    1951: [Sdoi2010]古代猪文
    BZOJ 1911: [Apio2010]特别行动队[斜率优化dp]
    BZOJ 2038: [2009国家集训队]小Z的袜子(hose)&&莫队算法
    gdb命令整理
    1833: [ZJOI2010]count 数字计数
    1227: [SDOI2009]虔诚的墓主人
    P3197 [HNOI2008]越狱
    3505: [Cqoi2014]数三角形
    P3414 SAC#1
    3398: [Usaco2009 Feb]Bullcow 牡牛和牝牛
  • 原文地址:https://www.cnblogs.com/LLBFWH/p/10057853.html
Copyright © 2020-2023  润新知