
算法
文章平均质量分 52
chn_cf
这个作者很懒,什么都没留下…
展开
-
各种排序算法及比较
1.稳定性比较 插入排序、冒泡排序、二叉树排序、二路归并排序及其他线形排序是稳定的 选择排序、希尔排序、快速排序、堆排序是不稳定的2.时间复杂性比较 插入排序、冒泡排序、选择排序的时间复杂性为O(n2) 其它非线形排序的时间复杂性为O(nlog2n) 线形排序的时间复杂性为O(n)3.辅助空间的比较 线形排序、二路归并排序的辅助空间为O(n),其它排序的辅助空间为O原创 2011-06-08 13:42:00 · 221 阅读 · 0 评论 -
计算n的阶乘末尾有多少个0
乘积末尾的0的个数依赖于因子中的2的个数和5的个数。对于阶乘来说,每2个数字就至少有一个2的因子,所以2的因子是足够的。5的因子相对少些,至少连续5个数才能保证一定出现一个。 注意,这里连续5个数保证出现一个5的因子是指最少的情况。比如1,2,3,4,5,这就只会出现一个。但是考虑 21,22,23,24,25,25 = 5 * 5,所以如果乘以25那就能得到2个5的因子。原创 2011-06-13 14:49:00 · 751 阅读 · 0 评论 -
发现首个非重复字符
1.问题描述编写一个高效的函数,找到字符串中首个非重复字符。例如:total 中的 首个非重复字符是o,teeter是r。2.问题讨论我们这里假设处理的是ASCII字符,字符总共就128个。为了避免每次搜索之前有没有出现该字符,应该用hash表来做。可以用一个int hash[128]来记录相关字符出现的次序。 3.代码charFirstNonRea原创 2011-06-09 23:24:00 · 398 阅读 · 1 评论 -
哈希表
散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。若结构中存在关键字和K相等的记录,则必定在f原创 2011-09-26 00:43:29 · 473 阅读 · 0 评论 -
数据结构(程序员面试宝典学习)
1.给出一个单链表,不知道节点数N的值,怎样遍历一次就可以求出中间节点?void searchmid(node *head, node *mid){ node *temp = head; while(head -> next -> next != NU原创 2011-09-25 22:33:01 · 1093 阅读 · 0 评论 -
不重复的随机数
#include#include #include using namespace std;int random_int(int m, int n); //返回[m,n)之间的随机整数void random_int_K(int n, int k, int *pResult);//生成[0,n)之间不重复的k个随机数int main(void){ ////////原创 2011-11-30 13:03:08 · 609 阅读 · 0 评论 -
快速排序c++语言代码
int partition(int *arr, int i, int j){ int tmp = arr[i]; while (i < j) { while(i= tmp) { --j; } arr[i] = arr[j]; while (i<j && arr[i] <= tmp) { ++i; } arr[j] =原创 2011-11-10 19:22:39 · 404 阅读 · 0 评论