
算法与数据结构
kinredon
生活就应该有节制、有规律。人就应该有上进心、有坚持、有学习
展开
-
基本排序算法总结
一、插入排序 假设a0, a1, a2....ai-1已经排好顺序,选择第i个元素ai从该位置向前依次比较,如果ai < aj, 则将aj向后移一位,否则将ai放在j+1的位置上。时间复杂度为O(n^2)/* * 对于一个近乎有序的数组,插入排序的性能很好,甚至会比O(nlogn)更快 */template <typename T>void insertionSort(...原创 2018-03-29 22:38:49 · 197 阅读 · 0 评论 -
堆相关问题
讲堆不得不提的就是优先队列。什么是优先队列?普通队列:先进先出,后进后出优先队列:出队顺序和入队顺序无关;和优先级相关如何实现优先队列?由上图可知,用堆来实现优先队列是一个理想的方法。这里采用二叉堆(最大堆)的定义: 所有节点的值都不大于其父节点的值 二叉堆是一个完全二叉树采用数组来存储二叉堆由二叉堆的定义可以得出结论:对一颗完全二叉树按层序遍历编号,根节点的编号为1, 假设父节点的编号为 i...原创 2018-04-01 17:40:36 · 292 阅读 · 0 评论 -
二叉(分)搜索树学习总结
1. 二分查找法学习二叉搜索树首先来看看二分查找。什么是二分查找呢?在一个有序数列中,找到某一元素的索引。没错只有一个有序数列, 才能使用二分查找法(排序的作用),二分查找法的思想在1946年提出,但是第一个没有Bug的二分查找法在1962年才出现。其思想就是每次将查找元素与数组中间位置比较,如果查找元素比中间元素小,说明查找元素在左边,然后递归下去查找左边,否则查找右边。// 二分查找法, 在有...原创 2018-04-05 13:13:25 · 778 阅读 · 0 评论 -
并查集学习总结
并查集是一种很不一样的数据结构。可以解决连接问题,路径问题,主要有两个操作:union(p, q)//将p和q所在的集合合并在一起find(p) //找到p属于哪个集合可以非常容易的实现判断p和q是否相连,是否在一个集合。1. 并查集实现思路1(quick find)由quick find可以看出,此种实现思路会在执行find操作是具有较高的效率。其实思路很简单,假设建立了一个大小为n的并查集,此...原创 2018-04-05 14:04:45 · 354 阅读 · 0 评论