• Python 算法


    冒泡排序

    def func(alist):
    for x in range(1,len(alist)):
    for i in range(0,len(alist)-x):
    if alist[i] > alist[i+1]:
    alist[i], alist[i+1] = alist[i+1], alist[i]
    return alist
    print(func([1,4,2,3,6,7,8,9,0,5]))

    选择排序

    def func(alist):
    for x in range(0,len(alist)):
    min_num = alist[x]
    for i in range(x+1,len(alist)):
    if alist[i] < min_num:
    alist[i], min_num = min_num, alist[i]
    alist[x] = min_num
    return alist
    print(func([1,4,2,3,6,7,8,9,0,5]))

    斐波那契

    def func(n):
    a = 0
    b = 1
    alist = []
    if n <= 2:
    alist.append(a)
    alist.append(b)
    return alist
    else:
    for i in range(n):
    alist.append(a)
    a, b = b, a + b
    return alist

    print(func(9))

    二分法
    def func(alist, item):
    low = 0
    high = len(alist)-1
    n = 0
    while low <= high:
    mid = int((low + high)/2)
    n += 1
    if alist[mid]==item:
    return mid
    if alist[mid]<item:
    low = mid + 1
    else:
    high = (mid-1)
    return None

    m=[1,2,3,4,8,9,11,12,14,18,19,20,28]
    print(func(m,14))

    链表
    class Node:
    def init(self, initdata):
    self.__data = initdata
    self.__next = None

    def getData(self):
        return self.__data
    
    def getNext(self):
        return self.__next
    
    def setData(self, newdata):
        self.__data = newdata
    
    def setNext(self, newnext):
        self.__next = newnext
    

    class SinCycLinkedlist:
    def init(self):
    self.head = Node(None)
    self.head.setNext(self.head)

    def add(self, item):
        temp = Node(item)
        temp.setNext(self.head.getNext())
        self.head.setNext(temp)
    
    def remove(self, item):
        prev = self.head
        while prev.getNext() != self.head:
            cur = prev.getNext()
            if cur.getData() == item:
                prev.setNext(cur.getNext())
            prev = prev.getNext()
    
    def search(self, item):
        cur = self.head.getNext()
        while cur != self.head:
            if cur.getData() == item:
                return True
            cur = cur.getNext()
    
        return False
    
    def empty(self):
        return self.head.getNext() == self.head
    
    def size(self):
        count = 0
        cur = self.head.getNext()
        while cur != self.head:
            count += 1
            cur = cur.getNext()
    
        return count
    

    if name == 'main':
    s = SinCycLinkedlist()
    print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size()))

    s.add(19)
    s.add(86)
    print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size()))
    
    print('86 is%s in s' % ('' if s.search(86) else ' not',))
    print('4 is%s in s' % ('' if s.search(4) else ' not',))
    print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size()))
    
    s.remove(19)
    print('s.empty() == %s, s.size() == %s' % (s.empty(), s.size()))
  • 相关阅读:
    JBoss野心勃勃的Web Beans
    缺陷消除率(DRE)
    New Features in EJB3.1(Part 1)
    Anders谈C# 4.0:新功能和展望
    NetBeans 时事通讯(刊号 # 32 Nov 03, 2008)
    JBoss野心勃勃的Web Beans
    Seam 敏捷开发与 JavaEE 经典分层架构
    目前加密算法解释【转载】
    借助FireBug来学习JavaScript的window对象
    extjs form 取值 赋值 重置
  • 原文地址:https://www.cnblogs.com/2193657219qq/p/13894719.html
Copyright © 2020-2023  润新知