算法的时间复杂度和空间复杂度合称为算法的复杂度。 1.时间复杂度 (1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执 ...
分类:
编程语言 时间:
2017-05-05 21:49:02
阅读次数:
172
package com.hzins.suanfa; /** * 最长公共子序列问题 * @author Administrator * */ public class Demo5 { /** * 额外空间复杂度O(n^2) * @param str1 * @param str2 * @return ... ...
分类:
其他好文 时间:
2017-05-05 14:10:37
阅读次数:
165
图的存储方式 1.邻接矩阵 邻接矩阵的二维数组表示第i个点到第j个点的权值为dis[i][j]。 实现容易,但时空复杂度都比较大,时间复杂度为O(n*n),空间复杂度为O(n*n)。 适合稠密图。 下为代码: 1 #include<cstdio> 2 #define N 4200 3 int vis ...
分类:
其他好文 时间:
2017-05-04 20:06:28
阅读次数:
178
一、常见的时间复杂度 常见时间复杂度的比较 二、算法分析 定义一个数组 此算法最好的情况时执行一次 而最坏的情况却要执行n次 注意:数据结构课程中,在没有特殊说明时,所分析算法的时间复杂度都是指最坏时间复杂度 三、算法的空间复杂度(space complexity) (1)、定义:S(n) = S( ...
分类:
编程语言 时间:
2017-05-03 22:01:10
阅读次数:
214
1、给出一个问题:给你一个整形数组,这个数组中除了一个数字仅仅出现一次外,其它数字都仅仅出现两次,求出那个仅仅出现一次的数字? 要求:时间复杂度为O(n) , 空间复杂度为O(1)。 这个题目的难点在于空间复杂度的限制。 解法:一个数出现两个,两个数同样。而相等两个数异或的值为0 。 所以。我们仅仅 ...
分类:
其他好文 时间:
2017-05-02 18:18:32
阅读次数:
104
题目:Minimum Size Subarray Sum 给定一个整数数组,和一个值,找到一个连续子序列,使其和>=给定的值,且该子序列长度最短。 思路1: 时间复杂度O(n),空间复杂度O(1)的解法。 使用首尾两个指针,求出两个指针之间的数据之和;当和大于等于s时,比较序列长度和最小值,然后,增 ...
分类:
其他好文 时间:
2017-05-01 20:51:00
阅读次数:
225
排序算法比较与分析一、常用排序算法简述下面主要从排序算法的基本概念、原理出发,分别从算法的时间复杂度、空间复杂度、算法的稳定性和速度等方面进行分析比较。依据待排序的问题大小(记录数量n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:【内排..
分类:
编程语言 时间:
2017-04-28 16:06:11
阅读次数:
219
Q:用位运算操作实现两个整数的交换。 证明:令a‘=a^b;(a'为中间值),所以:b=b^a'=b^(a^b)=b^b^a=0^a=a; 同理:a=a'^b=(a^b)^a=b 因此实现了a与b的交换。 总结:利用位异或运算,可以省掉临时变量,减少程序运算的空间复杂度。 ...
分类:
其他好文 时间:
2017-04-24 12:15:12
阅读次数:
124
一、常用排序算法简述 下面主要从排序算法的基本概念、原理出发,分别从算法的时间复杂度、空间复杂度、算法的稳定性和速度等方面进行分析比较。依据待排序的问题大小(记录数量 n)的不同,排序过程中需要的存储器空间也不同,由此将排序算法分为两大类:【内排序】、【外排序】。 内排序:指排序时数据元素全部存放在 ...
分类:
编程语言 时间:
2017-04-24 00:58:54
阅读次数:
247
题目:整数数组满足1<=a[i]<=n(n是数组的长度),某些元素出现一次,某些元素出现两次,在数组a[i]中找到【1,n】区间中未出现的数字。比如输入【4,3,2,7,8,2,3,1】,输出【5,6】。时间复杂度要求是O(n),空间复杂度要求O(1) 思路:看许多网友说用set数据结构去做,这就违 ...
分类:
移动开发 时间:
2017-04-23 11:58:41
阅读次数:
144