zoukankan      html  css  js  c++  java
  • Python_算法汇总

    1. 约瑟夫环:

    # 约瑟夫环:共31个数,每隔9个删除一个,要求输出前15个号码
    
    a=[x for x in range(1,31)]  #生成编号
    del_number = 8 #该删除的编号
    for i in range(15):
        print(a[del_number])
        del (a[del_number])
        del_number = (del_number + 8)%(len(a))
    约瑟夫环:共31个数,每隔9个删除一个,要求输出前15个号码

    2.斐波拉切数列:

    class Fibs:
        def __init__(self, n=10):
            self.a = 0
            self.b = 1
            self.n = n
        def __iter__(self):
            return self
        def __next__(self):
            self.a, self.b = self.b, self.a + self.b
            if self.a > self.n:
                raise StopIteration
            return self.a
    
    fibs = Fibs(100)
    for each in fibs:
        print(each)
    
    #------------------------------------------------------------
    
    def fibo(num):
        numList = [0,1]
        for i in range(num - 2):
            numList.append(numList[-2] + numList[-1])
        return numList
    
    fibs=fibo(10)
    for each in fibs:
        print(each)
        
    #----------------------------------------------------------------
    
    def fibo(n):
        x, y = 0, 1
    
        while(n):
            x,y,n = y, x+y, n - 1
        return x
    
    # print(fibo(1))
    
    for i in range(1,10):
        print(fibo(i))
        
    #-----------------------------------------------------------------
    斐波拉切数列(3种)

    3.快排 / 快速排序:

    def quickSort(num,l,r):  
        if l>=r:#如果只有一个数字时,结束递归  
            return  
        flag=l  
        for i in range(l+1,r+1):#默认以第一个数字作为基准数,从第二个数开始比较,生成索引时要注意右部的值  
            if num[flag]>num[i]:  
                tmp=num[i]  
                del num[i]  
                num.insert(flag,tmp)  
                flag+=1  
        quickSort(num,l,flag-1)#将基准数前后部分分别递归排序  
        quickSort(num,flag+1,r)  
      
    num=[1,-2,4,7,6,3,2,3]  
    quickSort(num,0,7)  
    print(num)  
    快排

    4.冒泡排序

    #encoding:utf-8
    l=[5,3,6,2,1,4,8,7,9]
    for j in range(len(l)-1):
        if l[j] > l[j+1]:
            l[j],l[j+1] = l[j+1],l[j]
    print(l)
    冒泡排序

    5.二分法查找

    def BinarySearch(array,t):
        low = 0
        height = len(array)-1
        while low < height:
            mid = (low+height)/2
            if array[mid] < t:
                low = mid + 1
    
            elif array[mid] > t:
                height = mid - 1
    
            else:
                return array[mid]
    
        return -1
    
    
    if __name__ == "__main__":
        print BinarySearch([1,2,3,34,56,57,78,87],57)
    二分法查找中间值
  • 相关阅读:
    ARP 协议
    天梯赛L1 题解
    DNS域名系统
    LeetCode 三角形最小路径和
    sql注入漏洞的利用
    XSS漏洞防御
    忘记密码功能漏洞挖掘
    sql bypass
    Web环境搭建组合
    常用数据库的总结
  • 原文地址:https://www.cnblogs.com/hellangels333/p/8830093.html
Copyright © 2011-2022 走看看