原文地址:https://segmentfault.com/a/1190000008484167 博主讲的很好 一:背景 给定一个字符串,求出其最长回文子串。例如: 以上问题的传统思路大概是,遍历每一个字符,以该字符为中心向两边查找。其时间复杂度为$O(n^2)$,效率很差。 1975年,一个叫Ma ...
分类:
编程语言 时间:
2018-08-14 14:34:22
阅读次数:
146
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6356 解题心得: 现在深深的知道了算法复杂度的重要了,这个题算复杂度的时候还要把一些常数也算出来,不然常数太大也容易凉凉阿。这个题的m的数量级比n的还要大一位,如果用离线对询问排序直接就TLE了。 其实 ...
分类:
其他好文 时间:
2018-08-12 11:58:35
阅读次数:
174
今天我们来看下算法复杂度和效率的问题,在判断一个算法的效率时,操作数量中的常数项和其他次要项常常是可以忽略的,只需要关注最高阶项就能得出结论。那么我们如何用符号定性的判断算法的效率呢?算法的复杂度分为两部分:1、时间复杂度,即算法运行后对时间需求量的定性描述;2、空间复杂度,即算法运行后对空间需求量的定性描述。 数据结构重点关注的是算法的效率问题,因此,我们后面会集中于讨论算法的时间复杂度;但其使用的方法完全可以用于空间复杂度的判断!我们经常在进行算法的时间复杂度用大O表示法来进行分析。下来对此种方法进行说明,算法效率严重依赖于操作(Operation)数量;操作数量的估算可以作为时间复杂度的估算;在判断时首先关注操作数量的最高次项。
分类:
编程语言 时间:
2018-08-07 23:47:11
阅读次数:
259
二分查找 概念: 二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求 线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。 算法复杂度: 二分查找法也称为折半查找法,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况 下用O(log n) ...
分类:
其他好文 时间:
2018-08-03 23:13:55
阅读次数:
297
插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 平均时间复杂度为O(n^2),最好的情况是O(n),即数组已经是有序状态,最差O(n^2),辅助存储为O(1)。插入排序是稳定的排序算法。 ...
分类:
编程语言 时间:
2018-08-02 13:17:17
阅读次数:
115
```` package com.java.base.sort.algorithm; / 冒泡排序 算法思路: 1.从数列第一个数开始,比较每相邻的两个数, 将较大(或较小)数交换至后面,直到将最大的数交换到数列最后 2.再循环第一步直到数列中只剩下第一个数 算法复杂度:O(n2) @author ...
分类:
编程语言 时间:
2018-08-02 00:01:59
阅读次数:
210
```` / 选择排序 算法思路: 1.遍历数列,找到最小(或最小)元素,然后将其放到数列首位,作为已排序部分 2.对剩下待排序数列,重复以上第一步,找到最小(或最小)元素放到已排序的部分后面,直到无待排序部分 算法复杂度:O(n2) 稳定性:不稳定 @author lxy / public cla ...
分类:
编程语言 时间:
2018-08-01 23:58:52
阅读次数:
300
视频参考 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O(m*n),而如果用KMP算法,复杂度将会减少线型时间O(m+n)。 设主串为ptr="ababaaababaa";,要比较的子串为a=“aab”; KMP算法用到了next数组,然后利用next数组的值来提高匹配速度,我 ...
分类:
编程语言 时间:
2018-07-27 16:19:44
阅读次数:
172
算法复杂度:分为时间复杂度和空间复杂度。时间复杂度指的是语句执行次数,空间复杂度指的是算法所占的存储空间。 时间复杂度:指执行算法所需要的计算工作量; 空间复杂度:指执行这个算法所需要的内存空间。 kd树(K-dimension tree):是一种对k维空间中的实例点进行存储以便对其进行快速检索的树 ...
分类:
其他好文 时间:
2018-07-26 18:31:39
阅读次数:
146
不用ABAP的标准SORT语句,你能将下面这个数组按从小到大(或从大到小)的顺序重新排列,并计算其算法复杂度吗? 现在假设有一个数组:A = [10,66,52,102,-65,85,99,1,56,32,10,21,18] 算法思想一: 按数组顺序,每次读取一个数字放到新数组中,将这个数字与该数组 ...
分类:
编程语言 时间:
2018-07-25 11:25:25
阅读次数:
449