
算法
文章平均质量分 75
csdn_user_info
这个作者很懒,什么都没留下…
展开
-
算法之2--桶排序
桶排序桶排序是时间为o(n)的算法,属于用空间换取时间的算法,总结其用途可以有以下几点1.实现按规则的排序.2.求数据之间最大的间距.3.求数据之间间距最大的三个数.4.求时间复杂度为o(n)的排序算法.......等-----------------------------------------------------------------------------原创 2015-09-27 01:48:51 · 584 阅读 · 0 评论 -
从二维数组路径最小和看动态规划到维特比算法
动态规划/维特比算法----参考吴军的《数学之美》,七月算法。摘要:主要是从题目--二维数组路径最小和 的暴力枚举解法时间复杂度太高,贪心算法解法只能做到局部最优无法做到全局最优,从而引出动态规划,再到一个特殊但应用广泛的动态规划算法-维特比算法。题目:二维数组路径最小和Given amxngrid filled with non-negative numbers...原创 2019-05-06 21:54:20 · 532 阅读 · 0 评论 -
时间复杂度分析(递归求斐波那契)
使用递归树进行分析1.斐波那契的递推式是: f(n)=f(n-1)+f(n-2)其中:f(1)=1,f(2)=12.用java代码实现:public int getResult(int n){if(n == 1 || n == 2) return 1;return getResult(n-1)+getResult(n-2);}3.时间复杂度分析(递...原创 2019-05-01 00:00:51 · 5647 阅读 · 4 评论 -
分布式ID如何实现
分布式id原创 2019-05-03 22:13:28 · 272 阅读 · 0 评论 -
算法之7-快速排序
java版的快速排序原创 2016-10-04 18:29:56 · 399 阅读 · 0 评论 -
算法之5--回溯法解决八皇后问题
关键点:1.判断条件的书写2.横向走和纵向走,往回走的控制条件就是,当满足条件,且还没走到底(N),纵向走(此时continue,可以有可能一直走到底)当不满足条件,横向还没走到底,横向走当不是第一行的列是最后一列的时候,往回走(此时可以判断是第一行在最后一列的话,可以退出循环,直接break掉)代码如下:public class queen { /**原创 2015-12-06 19:54:25 · 770 阅读 · 0 评论 -
算法之6-回溯法解数独问题
刚开始学习的时候,总是不知道对数组进行回溯的时候,怎么保证找到的是下一个空值, 所以写好一半的代码就放在一边,一个星期之后回过头再看回溯法解数独的时候,突然醒悟过来:原来在构造数组的时候,以0值代替空值,当从1-9的某一个数填入该处的时候,该处就不是0值,回溯重新调用方法的时候,找到的0值就是下一处的0值了.注意点: (1).sudoku方法的返回值是布尔值,这样子"&&"两边才原创 2015-12-20 21:02:58 · 2185 阅读 · 1 评论 -
算法之4--拓扑排序
转眼已经是11月的尾巴了,这个月就写了一篇文章,趁着周六日的时间,把拓扑排序用java实现了一边实现方法import java.util.Stack;public class TopoSortMethod {int[] sort(int graph[][]){ int[] sortedArray = null; //构造一个栈,用来存放节点 Stack stack=ne原创 2015-11-29 21:12:23 · 388 阅读 · 0 评论 -
算法之3--合并排序
合并排序1.基本设计思想:将原始数组A[0...n-1]中的元素分成两个子数组:A1[0,n/2]和A2[n/2+1,n-1].分别对这两个子数组单独排序,然后将已排序的两个子数组归并成一个含有n个元素的有序数组.2.与快速排序的联系a.都是分治的思想.b.经过一次划分之后,实现对A数组的调整:其中一个子集合的所有元素均小于等于另外一个子集合的所有元素.C.快速排序按同样的策略原创 2015-10-11 08:43:01 · 623 阅读 · 0 评论 -
算法之1--KMP
KMP,即The Knuth-Morris-Pratt Algorithm,中间的单词是创造早这个算法的三个人,该算法可以用于字符串的匹配查找,该算法的优势体现在当主串和模式串有重复字符时,可以降低时间复杂度。一般在学习算法之前所用的方法的方法都是暴力求解(Brute Force,BF),下面我将一一讲解这两种算法。 一.BF先不说介绍,先看查找过程,如下图:这边p从M的第原创 2015-08-16 15:14:37 · 407 阅读 · 0 评论 -
多线程的问题
1.多线程解决什么问题?(1)提高程序的运行性能。(2)充分利用系统的处理能力,提高系统的资源利用率。(3)提高程序的响应时间。(4)更好的编程模型。2.为什么对并发度能做提升?线程是大多数操作系统调度的基本单位,一个程序作为一个进程来运行,程序在运行的过程中能创建多个线程,而一个线程同一时刻只能运行在一个处理器核心上。所以对于一个单线程程序,再多的处理核心处理器加入也无法...原创 2019-08-20 23:51:40 · 238 阅读 · 0 评论