随机生成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