最近整理了常用的排序算法,整理好,留下自己的思考过程。 1、冒泡排序: (1)平均时间复杂度:O(n2) (2)最好时间复杂度:O(n) (3)最坏时间复杂度:O(n2) (5)空间复杂度:O(1) (5)稳定性:稳定 (6)JavaScript实现: 2、选择排序: (1)平均时间复杂度:O(n2 ...
分类:
编程语言 时间:
2017-03-25 23:38:57
阅读次数:
173
引文 我有个朋友有算法强迫症,每次一看到别人写的算法,就有上去改的冲动,不然就会偏头疼,主要症结在于他认为别人写的算法不好,但是什么的算法可以评判为好,什么样的算法可以评判为不好?最近为了治愈他,我特地写了这篇文章。 算法的衡量从两个方向出发:时间复杂度和空间复杂度。本文主要是不讲具体算法,只将算法 ...
分类:
编程语言 时间:
2017-01-28 22:58:23
阅读次数:
696
1#树上倍增 以前写的博客:http://www.cnblogs.com/yyf0309/p/5972701.html 预处理时间复杂度O(nlog2n),查询O(log2n),也不算难写。 2#st表(RMQ) 首先对一棵树进行dfs,得到欧拉序列,记录下每个节点的第一次出现位置。 (先序遍历这棵 ...
分类:
编程语言 时间:
2017-01-22 22:43:30
阅读次数:
585
一、数据结构和算法知识、Java基础知识 附个人算法整理下载地址(目标是实现代码复用):https://github.com/chenyonghai/cyhalgorithm (待完善) 二、自己心里得有个总体把握,有一套属于自己的技术体系框架,掌握核心内容,从而最大化的实现代码复用。 下面的项目, ...
分类:
其他好文 时间:
2016-12-14 21:36:15
阅读次数:
180
1.回文数 2.数组去重 3.字符串中出现最多次数的字符和次数 4.冒泡排序 5.不利用中间变量交互两个 6.斐波那契数组 7.生成随机长度字符串 还有一些其他算法,先总结到这 ...
分类:
编程语言 时间:
2016-10-31 18:27:26
阅读次数:
220
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。下面是自己整理的常用数据结构与算法相关内容,如有错误,欢迎指出。 为了便于描述,文中涉及到的代码部分都是用Java语言编写的,其实Java本身对常见的几 ...
分类:
编程语言 时间:
2016-09-26 12:26:34
阅读次数:
159
从学习数据结构开始就接触各种算法基础,但是自从应付完考试之后就再也没有练习过,当在开发的时候也是什么时候使用什么时候去查一下,现在在学习JavaScript,趁这个时间再把各种基础算法整理一遍,分别以JS和PHP语法的方式编写代码。 1.冒泡排序 原理:临近的数字两两进行比较,按照从小到大或者从大到 ...
分类:
编程语言 时间:
2016-07-11 21:24:23
阅读次数:
271
最大公约数:能够同时被两个数整除的那个最大的数。 最小公倍数:两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数。 最小公倍数=两整数的乘积÷最大公约数 反之同理。 最大公约数算法: 1.GCD算法(欧几里得算法): 定理:两个整数的最大公约数等于其中较小的那个数和两数的相除 ...
分类:
编程语言 时间:
2016-07-09 17:54:12
阅读次数:
223
模板部分(想背的就背一下吧,但是不建议……毕竟排序用sort函数就行了,这些排序的算法只是为了锻炼你的思维逻辑能力罢了): 1.选择排序 #include<cstdio> #define N 100000+100 int a[N],n; int main() { scanf("%d",&n); fo ...
分类:
编程语言 时间:
2016-06-06 21:54:00
阅读次数:
211