您的位置:首页 > 其它

冒泡排序、选择排序、插入排序、快速排序、二叉树

2016-10-05 17:29 302 查看

冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。

它重复地走访过要排序的数列,一次笔记两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行知道没有在需要的交换,也就是说该数列已经排序完成。

这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。

data_set = [ 9,1,22,31,45,3,6,2,11 ]

loop_count = 0
for j in range(len(data_set)):
for i in range(len(data_set) - j- 1): # -1 是因为每次比对的都 是i 与i +1,不减1的话,最后一次对比会超出list 获取范围,-j是因为,每一次大loop就代表排序好了一个最大值,
                          放在了列表最后面,下次loop就不用再运算已经排序好了的值 了
if data_set[i] > data_set[i+1]: #switch
tmp = data_set[i]
data_set[i] = data_set[i+1]
data_set[i+1] = tmp
loop_count +=1
print(data_set)
print(data_set)
print("loop times", loop_count)


  

"""
求二叉树最大值与和
"""

class TreeNode(object):

def __init__(self, left=0, right=0, data=0):
self.left = left
self.right = right
self.data = data

class BTree(object):

def __init__(self, root=0):
self.root = root
self.li = []
self.sum = 0
self.big = 0

def is_empty(self):
if self.root is 0:
return True
else:
return False

def postorder(self, treenode):
'后序(post-order,LRN)遍历'
if treenode is 0:
return
self.postorder(treenode.left)
self.postorder(treenode.right)
if treenode.data > self.big:
self.big = treenode.data
self.li.append(treenode.data)
self.sum += treenode.data

node1 = TreeNode(data=1)
node2 = TreeNode(node1, 0, 2)
node3 = TreeNode(data=3)
node4 = TreeNode(data=4)
node5 = TreeNode(node3, node4, 5)
node6 = TreeNode(node2, node5, 6)
node7 = TreeNode(node6, 0, 7)
node8 = TreeNode(data=8)
root = TreeNode(node7, node8, 2)

if __name__ == '__main__':

bt = BTree(root)
bt.postorder(bt.root)
print("最大值为:", bt.big)
print("和为:", bt.sum)


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐