
algorithm
bestrivern
热爱计算机视觉,机器学习,算法,编程,正在不断学习中
展开
-
优先级队列(Priority Queue)(三)
批量建堆的算法主要有两种,自上而下的上滤和自下而上的下滤。一.自上而下的上滤template <typename T> void PQ_ComplHeap<T>::heapify(Rank n){ for(int i=1;i<n;i++) { percolateUp(i); }}二.效率分析时间复杂度:O(...原创 2020-02-09 11:49:14 · 398 阅读 · 0 评论 -
优先级队列(Priority Queue)(二)
在完全二叉树周插入元素的方法是插入到底层,上滤在完全二叉树周删除元素的方法是将底层元素置于顶端,下滤一.上滤为插入词条e,只需要将e作为末尾元素接入向量否则,e与其父节点换位否则,e再与父节点换位不断重复,直到e与其父亲满足堆序性,或者e达到堆顶(没有父亲)二.代码实现template <typename T> void PQ_ComplHeap<...原创 2020-02-08 18:09:29 · 279 阅读 · 0 评论 -
优先级队列(Priority Queue)(一)
一.概述优先级队列和通常的栈和队列一样,只不过里面的每一个元素都有一个”优先级”,在处理的时候,首先处理优先级最高的。如果两个元素具有相同的优先级,则按照他们插入到队列中的先后顺序处理。优先级队列可以通过链表,数组,堆或者其他数据结构实现。如果用数组来实现的话,如果插入操作是简单的在最后插入的话,其Insert的复杂度是O(1),但是相对应的其查找最高优先级元素的复杂度就是O(n),...原创 2020-02-08 11:25:48 · 776 阅读 · 0 评论 -
编程解题技巧总结
1.判断奇偶数奇数:a%2==1 偶数:a%2==0 奇数:a&1==1 偶数:a&1==02.链表中倒数第k个节点 双指针法3.反转链表三指针滑动pPrev -> pNode -> pNext;pNext=pNode->next;pNode->next=pPre...原创 2019-04-17 22:03:03 · 886 阅读 · 0 评论 -
动态规划(DP)
一.DP简介1.定义:动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最...原创 2018-12-24 14:26:08 · 2342 阅读 · 1 评论 -
背包问题
一.题目描述原创 2018-12-24 14:25:39 · 525 阅读 · 0 评论 -
内排序算法
一.综合比较稳定性:重复元素之间的相对次序在排序前后保持一致排序算法 时间复杂度 稳定性 冒泡排序(bubblesort) O(N^2) 稳定 归并排序(mergesort) O(NlogN) 稳定 选择排序(selectsort) O(N^2) 快速排序(quicksort) 堆排序() ...原创 2019-01-03 20:46:17 · 280 阅读 · 0 评论 -
算法时间复杂度分析
一.级数算术级数:与末阶平方同阶T(n)=1+2+...+n=n(n+1)/2=O(n^2)幂方级数:比幂次高出一阶T(n)=1^2+2^2+...+n^2=n(n+1)(2*n+1)/6=O(n^3)T(n)=1^3+2^3+...+n^3=n^2(n+1)^2/4=O(n^4)T(n)=1^4+2^4+...+n^4=n(n+1)(2*n+1)(3*n^2+3*n...原创 2018-12-23 20:35:08 · 1579 阅读 · 0 评论