一组无序的自然数集合,由0,1,2... ...,n的数字和一个的数字X(X>=0 && X<=n)组成,请从集合中找出这个重复数字X。
a = input()
b = a.split(" ")
c = []
for i in b:
for j in c:
if i == j:
print (i)
c.append(i)
指针排序
def sort_list(a):
first = 0
second = 1
while first < len(a)-1:
if a[first] > a[second]:
temp = a[first]
a[first] = a[second]
a[second] = temp
if first>0:
first -= 1
second -= 1
else:
first += 1
second += 1
return a
a = list(map(int,input().split(" ")))
print (sort_list(a))
二分查找
def find_num(a,b):
first = 0
end = len(a)
num = (first+end)//2
while num!=first and num!=end:
num = (first+end)//2
print(num, first, end)
if int(b) < int(a[num]):
end = num
else:
first = num
num = (first+end)//2
print(num, first, end)
if a[num] == b:
print(b)
else:
print("not exist!")
a = [1, 3, 4, 6, 8, 9]
b = 2
find_num(a,b)
递归查找
def find_num(a,b):
print(a)
if len(a)==1:
if a[0]==b:
print("Find!")
return
else:
print("Not find!")
return
else:
num = len(a)//2
if a[num] == b:
print("Find!")
return a[num]
elif a[num]<b:
c = find_num(a[num:],b)
return c
else:
c = find_num(a[0:num],b)
return c
a = [1, 3, 4, 6, 8, 9]
b = 1
c=find_num(a,b)
print(c)
二叉树插入和中序输出
class Tree():
def __init__(self, value):
self.root = value
self.left = None
self.right = None
def insert(self, value):
self.insert_node(self,value)
def insert_node(self, root_node, v):
if v < root_node.root:
if root_node.left == None:
root_node.left = Tree(v)
else:
self.insert_node(root_node.left, v)
else:
if root_node.right == None:
root_node.right = Tree(v)
else:
self.insert_node(root_node.right, v)
result = []
def print_tree(node):
if node.left != None:
print_tree(node.left)
result.append(node.root)
if node.right != None:
print_tree(node.right)
n1 = Tree(5)
n1.insert(7)
n1.insert(3)
n1.insert(1)
print(n1.root,n1.left.root,n1.right.root)
print(n1.left.root,n1.left.left.root,n1.left.right)
print_tree(n1)
print(result)