博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法笔记
阅读量:5163 次
发布时间:2019-06-13

本文共 992 字,大约阅读时间需要 3 分钟。

 一、排序算法

1.桶排序(最快最简单的排序)

  这个算法就好比有11个桶,编号从0~10。每出现一个数,就将对应编号的桶中的放一个小旗子,最后只要数数每个桶中有几个小旗子就OK了。

  优点:速度快

  缺点:比较费空间

  时间复杂度:O(M+N)

 

 

2.冒泡排序:(邻居好说话,但是效率低)

  就如同是一个气泡,一步一步往后“翻滚”,直到最后一位。

  优点:空间复杂度较小

  缺点:时间复杂度较高(因此不推荐)

  时间复杂度:O(N^2)

 

  

 

 3.快速排序:(最常用的排序)

  每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。

  优点:比冒泡排序效率要高

  缺点:最差的情况,复杂度等于冒泡排序

  时间复杂度:O(NlogN)

 

二、常用数据结构

1.队列:先进先出

 

2.栈:后进先出

 

3.链表:快速插入

  双向链表、循环链表

 

三、常用算法 

1.枚举法:暴力破解

  通过优化算法,可以减少计算量,降低时间复杂度

 

2.搜索算法:递归+枚举

  1)深度优先搜索算法:先深入,再退回,再广度

    水管问题

  2)广度优先搜索算法:先广度,再排除,再深入

    漫水填充法

 

3.图算法:利用特制的线条算图求得答案的一种简便算法。无向图、有向图和网络能运用很多常用的图算法,这些算法包括:各种遍历算法(这些遍历类似于树的遍历),寻找最短路径的算法,寻找网络中最低代价路径的算法,回答一些简单相关问题(例如,图是否是连通的,图中两个顶点间的最短路径是什么,等等)的算法。图算法可应用到多种场合,例如:优化管道、路由表、快递服务、通信网站等。

  1)floyd-warshall算法:只需5行代码。使用穷举法,遍历所有2点间的距离,是否比它们之间加入其它点中转要短

  2)dijkstra算法:

 

附录:

时间复杂度:

我们用大写字母 O来表示时间复杂度,因此如果算法的时间复杂度是 O(m+n+m+n)即 O(2*(m+n))。我们在说时间复杂度的时候可以忽略较小 的常数,最终桶排序的时间复杂度为 O(m+n)。还有一点,在表示时间复杂度的时候,n 和 m 通常用大写字母即 O(M+N)。

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/xujanus/p/8960833.html

你可能感兴趣的文章
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>
【更新】智能手机批量添加联系人
查看>>
NYOJ-128前缀式计算
查看>>
深入理解 JavaScript 事件循环(一)— event loop
查看>>
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>