堆排序分析:
最优时间复杂度:O(nlog2n)
最坏时间复杂度:O(nlog2n)
平均时间复杂度:O(nlog2n)
空间复杂度:O(1)
稳定性:不稳定
C语言代码...
分类:
其他好文 时间:
2014-08-21 19:23:44
阅读次数:
182
问题描述:给定字符串和左旋的字符数,写程序实现字符串的左旋操作。例如对于字符串”12345678″, 左旋转4个字符后,变成”56781234″。要求时间复杂度为O(n),空间复杂度O(1)。分析:假设字符串表示为XY,X表示需要左旋的部分,左旋后字符串表示为YX。根据公式:代码实现: 1 // 2...
分类:
其他好文 时间:
2014-08-21 18:34:34
阅读次数:
169
在上一篇文章Levenshtein distance算法实现中,笔者已经讲解了一般最小编辑距离的算法。该算法采用动态规划,时间复杂度是O(m*n),m,n分别为两个字符串的长度,而空间复杂度也是O(m*n),如果使用int作为矩阵元素的类型,则矩阵的占用空间大小为sizeof(int)*m*n,假如两个字符串的长度均为10000个字符,则矩阵大小为400MB,相当可观。参考一个快速、高效的Leve...
分类:
其他好文 时间:
2014-08-20 12:38:02
阅读次数:
187
之前学过的都忘了,也没好好做过总结,现在总结一下。时间复杂度和空间复杂度的概念:1、空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间。2、时间复杂度:一个算法花费的时间与算法中语句的执...
分类:
编程语言 时间:
2014-08-20 12:27:12
阅读次数:
263
在箱子排序中,虽然时间复制度只有(n),但如果其箱子序列较大的话将会导致程序的空间复杂度较大,所以对于对于属性值跨度比较大的序列可以采用基数排序法。
概述:具体的做法是并不直接对这些数排序,而是采用一些基数来分解这些数,例如:用基数10来分解3725可以得到3、7、2和5。而利用60来分解可以得到1、2、5。然后再根据每一位基数从低位到高位对原数据进
行排序,即若最长的基数有m位,直到...
分类:
其他好文 时间:
2014-08-19 22:27:55
阅读次数:
208
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串abcdef左旋转2位得到字符串cdefab。 请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O...
分类:
其他好文 时间:
2014-08-19 11:11:24
阅读次数:
189
昨天做了几个题目,过于简单,就不在博客里面写了。
1314这道题也比较简单,写出来是因为我觉得在这里有一个小技巧,对于时间复杂度和空间复杂度都比较节省。
这个题目类似哈希表的求解,但是更简单。刚拿到题目时,我想当然的希望将查询结果放到一个数组里面,然后遍历查询是否有一样的mod值。但是感觉这样肯定是最普遍的方法而且效率也不是太高。
后来想到了其他的一些查询算法,比如二分,但是都感觉不太合适。...
分类:
编程语言 时间:
2014-08-19 11:02:04
阅读次数:
156
【问题】
1、不用除法运算
两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]...*a[N-1]/a[i]; 要求:
1.不准用除法运算2.除了循环计数值,a[N],b[N]外,不准再用其他任何变量(包括局部变量,全局变量等)3.满足时间复杂度O(n),空间复杂度O(1)。
【分析】
提示:题目要求...
分类:
其他好文 时间:
2014-08-15 17:50:49
阅读次数:
198
当然了,O(1)空间复杂度是必须的...先看一个简单版:求出一个序列中一个只出现一次的数COJ 1217 奇数个的那个数http://122.207.68.93/OnlineJudge/problem.php?id=1217我们知道任意两个相同的数 异或结果为0 任何数与0异或结果是其本身 异或运算...
分类:
其他好文 时间:
2014-08-15 17:21:49
阅读次数:
194
61.找出数组中两个只出现一次的数字(数组)题目:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是 O(n),空间复杂度是 O(1)。思路:瞄到了一眼提示,说是位运算。根据异或的运算性质:a ⊕ b ⊕ a = b把所有的数字都异或一遍得到...
分类:
其他好文 时间:
2014-08-14 19:23:49
阅读次数:
188