冒泡排序、选择排序、插入排序、快速排序、二叉树
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
相关文章推荐
- C#实现所有经典排序算法(选择排序,冒泡排序,快速排序,插入排序,希尔排序)
- 冒泡排序,快速排序,插入排序以及二叉树查找的O级时间的比较
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序
- 内排序(插入排序、冒泡排序、选择排序、shell排序、快速排序、归并排序、堆排序)
- 冒泡排序、插入排序、快速排序、选择排序
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序
- 【算法】希尔排序,快速排序,选择排序,插入排序,冒泡排序
- 插入排序、选择排序、冒泡排序、快速排序、堆排序
- 插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序
- Java实现排序(快速排序、冒泡排序、选择排序、基数排序、插入排序)
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- 经典排序算法设计与分析(插入排序、冒泡排序、选择排序、shell排序、快速排序、堆排序、分配排序、基数排序、桶排序、归并排序)
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- 各种排序算法实现——基数排序、归并排序、插入排序、冒泡排序、选择排序、快速排序、堆排序、希尔排序
- 几种常用的排序算法的分析及java实现(希尔排序,堆排序,归并排序,快速排序,选择排序,插入排序,冒泡排序)
- c语言中的几种排序算法——冒泡排序、快速排序、插入排序、选择排序
- 冒泡排序,插入排序,选择排序和快速排序-C语言
- [java]排序分类--及选择排序、插入排序、冒泡排序、快速排序的解释图和代码
- 八大排序方法汇总(选择排序,插入排序-简单插入排序、shell排序,交换排序-冒泡排序、快速排序、堆排序,归并排序,计数排序)