算法
LzwGlory
坚持自己的路
展开
-
排序算法分析(JAVA实现)
冒择入希快归堆排序算法教程讲解(数据结构学习网)A、插入排序:1、直接插入排序(百科) 直接插入排序(自己总结)2、二分法插入排序(自己总结)3、希尔排序(自己总结)B、选择排序1、简单选择排序(百科) 简单选择排序(自己总结)本质:(从上往下,从左往右比较):第一位与后转载 2015-07-27 11:24:59 · 584 阅读 · 0 评论 -
算法时间复杂度的计算 [整理]
算法时间复杂度的计算 [整理]博客分类: 算法学习时间复杂度算法 基本的计算步骤 时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称转载 2015-10-08 18:21:26 · 2002 阅读 · 0 评论 -
如何计算时间复杂度
一、概念时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)比如:一般总运算次数表达式类似于这样:a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+fa ! =0时,时间复杂度就是O(2^n);a=0,bO(n^3);a,b=0,cO(n^2)依此类推eg:(1) for(i=1;i //循环了n*n次,当然是O(n^2) f转载 2015-10-08 18:34:42 · 777 阅读 · 0 评论 -
快速排序算法原理及java递归实现
快速排序 对冒泡排序的一种改进,若初始记录序列按关键字有序或基本有序,蜕化为冒泡排序。使用的是递归原理,在所有同数量级O(n longn) 的排序方法中,其平均性能最好。就平均时间而言,是目前被认为最好的一种内部排序方法基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归转载 2015-07-24 17:55:30 · 799 阅读 · 0 评论 -
冒泡排序算法原理及JAVA实现
冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)JAVA源代码(成功运行,需要转载 2015-09-10 12:56:06 · 719 阅读 · 0 评论 -
java 实现二分查找法
二分查找又称折半查找,它是一种效率较高的查找方法。 【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。[java] view plaincopy/** * 二分查找又称折半查找,它是一种效率较高的查找方法。 【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。 * @转载 2015-09-09 13:41:27 · 642 阅读 · 0 评论 -
直接插入排序算法原理及JAVA实现
直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环,直到全部排好顺序。复杂度:时间复杂度 O(n2) ,空间复杂度O(1)稳定性: 插入排序是稳定的,排序前后两个相等元素相对次序不变(能保证排序前2个转载 2015-07-27 15:38:15 · 643 阅读 · 0 评论 -
希尔排序算法原理及JAVA实现
希尔排序(缩小增量排序)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d。对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。复杂度:平均时间复杂度O(n1.25) 空间复杂度 O(1)实例图 增量序列的选转载 2015-07-27 17:26:42 · 603 阅读 · 0 评论 -
简单选择排序算法原理及JAVA实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1)复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2);空间复杂度 O(1)转载 2015-07-27 11:28:12 · 655 阅读 · 0 评论 -
背包问题-贪心法-java实现
完全背包问题一个旅行者有一个最多能用m公斤的背包,现在有n种物品,每件的重量分别是W1,W2,...,Wn,每件的价值分别为C1,C2,...,Cn.若的每种物品的件数足够多.求旅行者能获得的最大总价值。 贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法不是对转载 2015-09-07 16:47:01 · 2938 阅读 · 0 评论 -
冒泡排序算法原理及JAVA实现
冒泡排序法:关键字较小的记录好比气泡逐趟上浮,关键字较大的记录好比石块下沉,每趟有一块最大的石块沉底。算法本质:(最大值是关键点,肯定放到最后了,如此循环)每次都从第一位向后滚动比较,使最大值沉底,最小值上升一次,最后一位向前推进(即最后一位刚确定的最大值不再参加比较,比较次数减1)复杂度: 时间复杂度 O(n2) ,空间复杂度O(1)JAVA源代码(成功运行)原创 2015-07-27 14:07:13 · 595 阅读 · 0 评论 -
算法时间复杂度T(n)大小顺序
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数f(n),算法的时间度量记作 T(n)=O(f(n)) ,他表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长相同,称作算法的渐进时间复杂度(asymptotic time complexity),简称时间复杂度。 时间复杂度T(n)按数量级递增顺序为:常数阶对数阶线性阶线性对数阶转载 2015-10-08 18:28:23 · 21308 阅读 · 1 评论