【ACM算法总结】教程文章相关的互联网学习教程文章

排序算法空间复杂度与时间复杂度总结

算法 空间复杂度 时间复杂度(平均/最坏) 稳定性冒泡排序 O(1) O(n2)/O(n2) 稳定选择排序 O(1) O(n2)/O(n2) 不稳定插入排序 O(1) O(n2)/O(n2) 稳定希尔排序 O(1) O(nlogn)/O(ns) (s为步长) 不稳定快速排序 O(logn) O(n*logn)/O(n2) 不稳定归并排序 O(n) O(nlogn)/O(nlogn) 稳定堆排序 O(1) O(nlogn)/O(nlogn) 不稳定时间复杂度:是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在...

【排序算法】——— 冒泡排序总结【代码】【图】

文章目录【1】冒泡排序的思想【2】普通冒泡排序算法【3】冒泡排序算法的优化【4】时间复杂度分析 【1】冒泡排序的思想 冒泡排序(Bubble Sort) 的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 【2】普通冒泡排序算法 先来看普通的冒泡排序算法 #include <iostream> #include <vector> using namespace std;void BubbleSort(vector<int>&vec) //冒泡排序算法 {int i, j;for (i = 0; i < vec.siz...

【排序算法】——— 简单选择排序总结【代码】【图】

文章目录【1】简单选择排序算法的思想【2】代码示例【3】过程理解【4】时间复杂度的分析 【1】简单选择排序算法的思想 前言:爱炒股票赚钱的人,总是喜欢不断的买进卖出,想通过价差来实现盈利。 但通常这种频繁操作的人,即使失误不多,也会因为操作的手续费和税过高而获利很少。 还有一种做股票的人,他们很少出手,只是在不断的观察和判断,等到时机一到,果断买进或卖出。 他们因为冷静和沉着,以及交易的次数少,而最终收益颇...

【排序算法】——— 直接插入排序总结【代码】【图】

文章目录【1】直接插入排序的思想【2】代码示例【3】时间复杂度分析 【1】直接插入排序的思想【2】代码示例 #include<iostream> #include<stdio.h> #include<vector> using namespace std;void SISort(vector<int>&vec) {int i, j; //循环变量int temp; //临时量for (i = 1; i < vec.size(); ++i) //每轮循环插入一个数vec[i]{j = i;temp = vec[i]; //临时量存放待插入的数据 后边数字后移会覆盖掉vec[i]的位置//j必须大于0 不能...

经典算法以及案例总结【代码】

算法习题的总结题目:数组中的第K个最大元素 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 示例 2: 输入: [3,2,3,1,2,4,5,5,6] 和 k = 4 输出: 4 思路说明: 由于是要找 k 个最大的数,所以没有必要对所有数进行完整的排序。每次只保留 k 个当前最大的数就可以,然后每次对新来的元素跟当前 k 个数中最小的...

疯子的算法总结(二) STL Ⅰ 算法 ( algorithm )【代码】

写在前面: 为了能够使后续的代码具有高效简洁的特点,在这里讲一下STL,就不用自己写堆,写队列,但是做为ACMer不用学的很全面,我认为够用就好,我只写我用的比较多的。 什么是STL(STl内容): 容器(Container): 是一种数据结构,如list,vector,和deques ,以模板类的方法提供。为了访问容器中的数据,可以使用由容器类输出的迭代器; 迭代器(Iterator): 提供了访问容器中对象的方法。例如,可以使用一对迭代器指定list或...

数学算法总结(面积、博弈)【代码】

1、求多边形的面积: (1)已知顶点坐标: 公式:s=0.5*abs((x1 * y2-x2 *y1)+(x2 *y3-x3 *y2)+、、、+(xn-1 *yn-xn *yn-1)) 这个公式不管是凹凸边形或者规则的,不过如果是顺时针输入点就是负的,逆时针就是正的。 例题:http://acm.hdu.edu.cn/showproblem.php?pid=2036` #include<stdio.h> double a[106][2]; int main() {int n;while(scanf("%d",&n),n!=0){for(int i=0;i<n;i++)scanf("%lf%lf",&a[i][0],&a[i][1]); a[n][0]=a[0...

【转载】【《Real-Time Rendering 3rd》 提炼总结】(十一) 第十四章 : 游戏开发中的渲染加速算法总结【图】

本文由@浅墨_毛星云 出品,转载请注明出处。 文章链接: http://blog.csdn.net/poem_qianmo/article/details/78884513导读 这是一篇1万3千余字的文章,通过阅读,你将对游戏开发与实时渲染中加速渲染算法的以下要点有所了解:常用空间数据结构(Spatial Data Structures)层次包围盒(BVH ,Bounding Volume Hierarchies)BSP树(BSP Trees)八叉树(Octrees)场景图(Scene Graphs)各种裁剪技术(Culling Techniques)背面裁剪(...

python – Numpy矢量化算法,用相同的时间戳来总结数字【代码】

我有两个数组P和T. P [i]是一个数字,其时间戳是T [i];可能存在重复的时间戳. 我想生成另外两个数组Q和U,其中Q [i]具有时间戳U [i],并且Q [i]是P中具有时间戳U [i]的所有元素的总和; 例如,对于 P = [1,2,3,4,5]T = [0,0,1,1,1] 我会生产 Q = [3,12]U = [0,1]; 有没有一种快速的方法在numpy中这样做,希望它可以矢量化它?解决方法:使用numpy 1.4或更高版本:import numpy as npP = np.array([1, 2, 3, 4, 5]) T = np.array([0, 0, 1...

疯子的算法总结(六) 复杂排序算法 ① 归并排序 merge_sort()【代码】

归并排序采取了分治的思想,每次分别排左半边和右半边,不断递归调用自己,直到只有一个元素递归结束,开始回溯,调用merge函数,合并两个有序序列,再合并的时候每次给末尾追上一个最大int这样就不怕最后一位的数字不会被排序。 #include <bits/stdc++.h> using namespace std; void merge(int a[],int n,int left ,int mid,int right); void merge_sort(int a[],int n,int left,int right); const int Maxn=5e5; const int Senti...

算法竞赛入门经典(第2版)总结

第一章程序设计入门总结 算法竞赛: 1-1: 整数值用%d输出,实数用%f输出。 1-2: 整数/整数=整数,浮点数/浮点数=浮点数 1-3: scanf中的占位符和变量的数据类型应一一对应,且每个变量前需要加"&"符。 1-4: 在算法竞赛中,输入前不要打印提示信息。输出完毕后应立即终止程序,不要等待用户按键,因为输入输出过程都是自动的,没有人工干预。 1-5: 在算法竞赛中不要使用头文件 conio.h , 包括getch()、clrscr()等函数。 1-6: 在算法竞...

排序算法总结【代码】

2019-07-20import java.net.Socket; import java.util.Arrays; import java.util.ConcurrentModificationException;/*** @ClassName SortDemo* @Author wangyudi* @Date 2019/7/20 14:44* @Version 1.0* @Description*/ public class SortDemo {/*** 选择排序:每次选择排列一个位置* 注意点:数组最后一个位置不需要选择* 每次和最小值进行比较** @param a*/public void selectSort(Comparable[] a) {if (a == null) return;int le...

协同过滤算法总结篇

(注:这里不再对算法公式累述)1.相似度算法 1.1Jaccard距离使用集合中的不同元素的比例来衡量两个集合的区分度,但是存在比较明显的问题无法关注到集合中元素的权重值(评分) 1.2余弦相似度利用向量空间解决了权重值(评分)带入相似度计算的问题,非常常用的相似度算法,弥补了Jaccard距离计算的不足 1.3Pearson相似度(又名中心余弦相似度)Pearson相似度是对余弦相似度改进,简明来说就是将权重值(评分)减去权重的平均值,可以理解为将...

二分图匹配之HK算法(知识点总结)

思路来源 https://blog.csdn.net/gddswlz/article/details/9086207(O(sqrt(n)*m)复杂度证明) https://blog.csdn.net/discreeter/article/details/51649155(板子来源) https://blog.csdn.net/qq_35776579/article/details/54945092 心得 看不懂复杂度证明,会用就行了,匹配题建图是核心 如果有谁懂复杂度证明,还望不吝赐教 知识点总结 每次bfs寻找多条长为d的增广路,第一次搜索时d至少为1,第二次d至少为2,依次往上增, 每一次b...

faster-rcnn算法总结【代码】

faster-rcnn的整体流程比较复杂,尤其是数据的预处理部分,流程比较繁琐。我写faster-rcnn系列文章的目的是对该算法的原始版本有个整体的把握,如果需要使用该算法做一些具体的任务,推荐使用mmdetection框架,该框架使用PyTorch写成,相比于原始的基于caffe python接口的版本就简洁优雅多了。下面对改算法的整体过程做一个梳理,分为训练过程(端到端的训练)和测试过程两部分。本文注重算法原理,因此直接从如下的数据输入开始:la...