上一页 1 ··· 8 9 10 11 12 13 下一页
摘要: 时空复杂度:冒泡排序:时间O(n^2),额外空间O(1)插入排序:时间O(n^2),额外空间O(1)选择排序:时间O(n^2),额外空间O(1)基数排序:时间O(k*n)(k=logN_max),额外空间O(n)(临时存储)+O(B)(记数,B为基的大小)记数排序:时间O(n+k),额外空间O(k)希尔排序:时间O(n*logn^2),额外空间O(1)快速排序:时间O(n*log(n)),额外空间O(logn)(递归栈)归并排序:时间O(n*log(n)),额外空间O(n)(临时数组)+O(logn)(递归栈)堆排序: 时间O(n*log(n))使快速排序退化的例子:n, n-1, n-2, 阅读全文
posted @ 2012-09-24 09:46 haolujun 阅读(601) 评论(0) 推荐(0) 编辑
摘要: 设f(x)为1-x中各个数字每位上出现1的次数总和。假如X=a[k]*10^k + a[k-1]*10^(k-1) + ...... + a[1] * 10 + a[0]1: a[k] = 1f(x) = f(X-10^k) + (X-10^k) + f(10^k - 1)例如:f(1234) = f(234) + 234 + f(999)2: a[k] > 1f(X) = f(X-a[k]*10^k) + (a[k]-2)*f(10^k - 1) + f(2*10^k - 1)例如: f(4567) = f(567) + 2*f(999) + f(1999)这样我们就导出一个递推关系。 阅读全文
posted @ 2012-09-23 21:16 haolujun 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 序列1,2,3.....n,依次入栈,求有多少种不同的出栈序列Y^| .| ..| ...| ....| .....|...... ----------> X问题等价于从左下角(0, 0)到右上角(n, n),只能向右、向上走(向右代表入栈,向上代表出栈),并且x>=y的路径数目。很明显,结果为C(2n, n)-C(2n,n-1). 阅读全文
posted @ 2012-09-23 20:55 haolujun 阅读(720) 评论(0) 推荐(0) 编辑
摘要: 前一段时间,在项目里遇到这样一个问题。我提供了一些函数,比如A(),B(),C().....。之后其他人根据具体情况调用不同的函数。这些函数有一个共同点,就是调用方式非常相似。使用者可能会这样使用这些函数if(condition == 1) A();else if(condition == 2) B();else if(condition == 3) C();else ...现在是看不出来有什么问题。但是问题在于调用函数没有这么简单,举一个复杂点的例子。使用者可能这样使用if(condition == 1){ do{ if(condition2) break; A(); ... 阅读全文
posted @ 2012-02-23 20:02 haolujun 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 不要天真的想程序中用了free之后,你的程序就会把内存还给了操作系统。从事C编程的人应该要知道,我们所用的malloc和free是由glibc提供的。glibc是一个具有系统级感觉的用户级程序,负责管理内存堆区。所以到底把free的内存还给还是没还给操作系统,大家还是看malloc和free的源码比较好。现在就交大家测试一下malloc和free的方法。01 #include <stdlib.h>02 #include <stdio.h>03 04 char*ch[1000];05 06 int main(intargc,char*argv[])07 {08 09 in 阅读全文
posted @ 2011-06-13 11:43 haolujun 阅读(2822) 评论(2) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12 13 下一页