天天看点

6666666

随机生成20个100内的数,直接插入排序。

class InsertSort(object):
    def __init__(self,items):
        self.items = items
    def insertSort(self):
        for i in range(1, len(self.items)):
            temp = self.items[i]
            j = i - 1
            while j >= 0 and temp < self.items[j]:
                self.items[j+1] = self.items[j]
                j -= 1
            self.items[j+1] = temp

if __name__=='__main__':
    import random
    arr = []
    for j in range(0,20):
        i = random.randint(0, 100)
        arr.append(i)
    select = InsertSort(arr)
    select.insertSort()
    print(arr)
           

转换进制

class Solution:
    def translation(self, number):
        stack = []
        s = ''
        while number:
            stack.append(number % 8)
            number //= 8
        while stack:
            s += str(stack.pop())
        return s


if __name__ == '__main__':
    t = Solution()
print("请输入要转换的数字:")
    num = int(input())
    print(t.translation(num))
           

循环链表尾插入法

class Node(object):
    def __init__(self,val):
        self.val = val
        self.next = None
class CircleLinkedList(object):
    def __init__(self):
        self.head = None
        self.tail = None

    def empty(self):
        return self.head is None

    def length(self):
        size = 0
        if self.empty():
            return size
        cur = self.head
        size += 1
        while cur.next is not self.head:
            size += 1
            cur = cur.next
        return size

    def append(self,val):
        newNode = Node(val)
        if self.empty():
            self.head = newNode
            self.tail = newNode
        else:
            self.tail.next = newNode
            self.tail = newNode
            self.tail.next = self.head
    def traversal(self):
        if self.empty():
            raise IndexError("链表为空")
        cur = self.head
        while cur.next is not self.head:
            print(cur.val,end = " ")
            cur = cur.next
        print(cur.val)

if __name__ == '__main__':
    cl = CircleLinkedList()
    print(":", end=" ")
    for i in range(10):
        key = int(input())
        cl.append(key)
    print("查看:",end=" ")
    cl.traversal()
           

证明:在非空二叉树中,第i层上最多有2的i-1个节点

用数学归纳法证明,第一层2的1-1次=1.第二层2的2-1次=2.第三层2的3-1次=4.由上面的规律可以发现,这是一个首项为1、公比为2的等比数列,可以得到第n层的节点数最多为2的n-1次。

证明:n个节点的完全二叉树的高度为【log2n】+1

由完全二叉树定义可得,高度为k的完全二叉树的前k-1层是高度为k-1的满二叉树,一共有2的k-1次-1个节点。由于完全二叉树高度为K,故第k层上还有若干个节点,因此,由该完全二叉树n>2的k-1次-1可得2的k-1次-1<n<2的k次-1;由于n为整数,可以推出2的k-1次<=log2n<k,而k作为整数,因此k=【log2n】+1