![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
chenqiumiao
这个作者很懒,什么都没留下…
展开
-
删除双向链表里的一个节点
删除双向链表里的一个节点原创 2011-05-29 15:46:00 · 648 阅读 · 0 评论 -
APK安装过程及原理详解
转自:http://mycoding.iteye.com/blog/1075114来自华为内部资料 PackageInstaller 原理简述 应用安装是智能机的主要特点,即用户可以把各种应用(如游戏等)安装到手机上,并可以对其进行卸载等管理操作。APK是Android Package的缩写,即Android安装包。APK是类似Symbian Sis或S转载 2011-10-26 23:35:03 · 318 阅读 · 0 评论 -
非递归实现二叉树的前序,中序,后序遍历
非递归前序遍历:void PreOrder(BiTree root){ stack bitreeStack; while(root!=NULL || !bitreeStack.empty()) { while(root!=NULL) { coutdata<<endl; bit原创 2011-10-24 17:28:14 · 2288 阅读 · 0 评论 -
筛选法求N以内的素数
素数筛法是这样的:1.开一个大的bool型数组prime[],大小就是n+1就可以了.先把所有的下标为奇数的标为true,下标为偶数的标为false. 2.然后: for( i=3; i { if(prime[i])原创 2011-10-15 21:48:16 · 498 阅读 · 0 评论 -
对5个数排序最少的比较次数
答案是7次,使用归并插入排序的思想。前四个先两两排成有序的,再对较大者排序,然后第五个元素做插入(二分),第三个元素插入。5 个数最快的排序, H.B.Demuth 于 1956 年在他的博士论文中提出了以下方法:开始时,就像用合并对4个元素排序一样,首先比较a:b,原创 2011-10-13 21:29:03 · 2374 阅读 · 1 评论 -
求a的b次方、a的b次方对m取模
http://zhaoqj518.iteye.com/blog/675210快速计算乘方的算法,求a的b次方如计算2^13,则传统做法需要进行12次乘法,但是可以优化:把2*2的结果保存起来看看,是不是成了:4*4*4*4*4*原创 2011-09-05 17:33:25 · 3624 阅读 · 0 评论 -
二叉树中两个节点的最近公共父节点
情况一:root未知,但是每个节点都有parent指针这个的问题实际上是另一个我们熟知的问题,有2个相交的单链表,找出它们的相交点!只要把这个二叉树的图片倒过来看,解决方法是求出linkedList A的长度lengthA, linkedList B的长度Length原创 2011-09-04 22:54:33 · 1628 阅读 · 0 评论 -
求n个数中第k大的数、前K大的数、快速排序
求n个数中第k大的数#include #include /** *求一个数组中的第k大数 *基本思想: *以最后一个元素x为轴,把数组分为两部分Sa和Sb。Sa中的元素大于等于X,Sb中元素小于X。这时有两种情况: *1.Sa中元素的个数小于k,则Sb中的第k-|原创 2011-05-29 15:45:00 · 5206 阅读 · 1 评论 -
扩展堆栈使得O(1)时间求栈的最小值(最大值)
参考:http://blog.csdn.net/jim_wei/article/details/6335388问题描述扩展stack的实现,完成正常的push,pop操作,新增访问最小(或最大)元素的接口Min(),使得push,pop,M转载 2011-08-31 23:13:11 · 5210 阅读 · 0 评论 -
用KMP算法写strstr函数
prefix数组的含义:prefix[i]=q表示模式(字串)str2中以元素str2[i]结尾,开头q个元素和最后q个元素相同。(注意:个数和数组下标之前相差1)比较过程中主串下标i一直往前走,当遇到不匹配时,调整字串下标j到可能匹配的位置。char* my_strstr(const char *str1,const char *str2){ int lengthT原创 2011-06-04 21:58:00 · 883 阅读 · 0 评论 -
0-1背包问题(动态规划解)
问题描述有N件物品和一个容量为V的背包。第i件物品的重量是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的重量总和不超过背包容量,且价值总和最大。解决方案该问题的特点是每种物品仅有一件,可以选择放或不放。用f[i][v](一个二维数组)表示前i件物品恰放入一个容量为v(这里不是总容量V)的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]原创 2011-06-06 16:42:00 · 394 阅读 · 0 评论 -
判断链表是否有环以及查找环的入口点
判断链表是否有环以及查找环的入口点原创 2011-05-29 17:24:00 · 1214 阅读 · 1 评论 -
单链表逆置
单链表逆置原创 2011-05-29 15:42:00 · 477 阅读 · 0 评论 -
atoi
实现atoi函数原创 2011-05-29 15:40:00 · 272 阅读 · 0 评论 -
求序列的全排列算法
转自:http://fengchangjian.com/?p=1063所谓全排列,就是将集合中元素的所有排列情况依次输出。比如{1、2、3}的全排列为:123、132、213、231、312、321,共6种,满足计算公式N!(N为集合中元素个数,不重复)。当元素不重复时,全排列采用递归思想较容易实现,它的递归公式推导步骤类似:1、要求得123的全排列,只需求得:1并转载 2011-11-07 11:45:53 · 972 阅读 · 0 评论