
数据结构
pisuto
这个作者很懒,什么都没留下…
展开
-
拓扑排序
拓扑排序(Top Sort)相关概念AOV(Activity On Vertex)网络表示所有的活动都是在顶点上,顶点之间由有向边连接,表示二者之间的先后关系 拓扑序 如果图中从v到w有一条有向边,则v一定排在w之前。满足此条件的顶点序列称为一个拓扑序 获得一个拓扑序的过程就是拓扑排序 AOV如果有合理的拓扑序,则必定是有向无环图(Directed Acyclic Graph, D...原创 2019-06-25 20:21:55 · 121 阅读 · 0 评论 -
冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort)相关概念冒泡排序是稳定的,即如果某一位置在排序前后的元素值没有变化,但经过排序替换的,称为不稳定,否则稳定 冒泡排序(优化后)的最好时间复杂度为:顺序O(N),最差为:逆序O(N^2) 冒泡排序的实现逻辑就是不断交换相邻元素,并且这一做法在链表和数组中都适用实现描述template<typename T>void BubbleS......原创 2019-06-25 20:54:52 · 229 阅读 · 0 评论 -
插入排序
插入排序(InsertionSort)相关概念插入排序是稳定的 插入排序和冒泡排序属于简单排序 逆序对 对于下标i<j,如果A[i]>A[j],则称(i,j)是一对逆序对 插入排序和冒泡排序通过每次交换元素正好消去一个逆序对,所以时间复杂度为O(N+I),I为输入序列中逆序对的个数。如果序列基本有序,那么插入排序简单高效。冒泡和插入的最好和最差时间复杂度一致 任意N个不...原创 2019-06-25 22:21:06 · 128 阅读 · 0 评论 -
希尔排序
希尔排序(ShellSort)相关概念增量元素不互质,则小增量可能根本不起作用 => Hibbard增量序列Dk=2^k-1,最坏的时间复杂度O(N^3/2),平均时间复杂度O(N^5/4)(猜想) => Sedgewick增量序列9*4^i-9*2^i+1或4^i-3*2^i+1,猜想平均复杂度O(N^7/6),最坏时间复杂度O(N^4/3)实现描述原始希尔排序...原创 2019-06-25 22:48:01 · 111 阅读 · 0 评论 -
归并排序
归并排序(Merge Sort)相关概念任何情况下归并排序都是稳定的,并且时间复杂度为O(NlogN) 递归实现的思想采用分而治之的思想 归并排序一般用于外排序 小知识:在内存中进行的排序称为内部排序,而在许多实际应用中,经常需要对大文件进行排序,因为文件中的记录很多,信息量庞大,无法将整个文件拷贝进内存进行排序。因此,需要将带排序的记录存储在外存上,排序时再把数据一部分一部分的调入...原创 2019-07-01 22:42:28 · 133 阅读 · 0 评论 -
快速排序 详解
快速排序(Quick Sort)相关概念快速排序的最好情况为O(NlogN),最差情况为O(N^2) 选一个主元将集合分为2个独立子集,分而治之的思想实现描述使用InsertionSort优化程序template<typename T> T Median3(vector<T>& vec, int left, int right) { in...原创 2019-07-02 10:12:17 · 285 阅读 · 0 评论 -
选择排序&堆排序
选择排序(SlectionSort)相关概念在使用两个for循环的情况下,选择排序的平均时间复杂度为O(N^2)实现描述1、实现思想template<typename T>void SelectionSort(vector<T>& vec) { for (int i = 0; i < vec.size(); ++i) { // 从i...原创 2019-06-28 14:31:49 · 107 阅读 · 0 评论