随笔分类 -  算法

该文被密码保护。
posted @ 2013-11-18 17:34 小薇林 阅读(0) 评论(0) 推荐(0)
摘要:#include int main(){ char a[300]; while(scanf("%s",a)!=EOF) { for(int i=0; a[i]!='\0'; ++i) { char min=a[i]; int u=i; for(int j=i+1; a[j]!='\0'; ++j) { if(a[j]<min) { min=a[j]; ... 阅读全文
posted @ 2013-10-06 12:33 小薇林 阅读(308) 评论(0) 推荐(0)
摘要:转自深秋的落叶向量(vector)连续存储的元素Vectorc;c.back()传回最后一个数据,不检查这个数据是否存在。c.clear() 移除容器中所有数据。c.empty()判断容器是否为空。c.front() 传回地一个数据。c.pop_back() 删除最后一个数据。c.push_back(elem) 在尾部加入一个数据。c[i]等同于 c.at(i);列表(list)由节点组成的双向链表,每个结点包含着一个元素listlist1(1,2,3)front()返回第一个元素的引用 intnRet =list1.front()// nRet = 1back()返回最后一元素的引用 int 阅读全文
posted @ 2013-10-06 11:14 小薇林 阅读(256) 评论(0) 推荐(0)
摘要:#include "stdio.h"#include "stdlib.h"void QuickSort(int*a,int low,int high){ int left,right,pivot; pivot=a[low]; left=low; right=high; while(low=pivot) high--; a[low]=a[high]; while(lowa[0]) ... 阅读全文
posted @ 2013-10-06 10:51 小薇林 阅读(186) 评论(0) 推荐(0)
摘要:最快速度找到内存泄漏 分类: c++ 2013-01-15 17:20 53人阅读 评论(0) 收藏 举报目录(?)[+]确认是否存在内存泄漏定位内存泄漏由于哪一句话引起的快速找到内存泄漏http://www.builder.com.cn/2008/0115/708177.shtml确认是否存在内存泄漏我们知道,MFC程序如果检测到存在内存泄漏,退出程序的时候会在调试窗口提醒内存泄漏。例如:class CMyApp : public CWinApp{public: BOOL InitApplication() { int* leak=newint[10]; return TRUE; }};产生 阅读全文
posted @ 2013-03-21 00:50 小薇林 阅读(146) 评论(0) 推荐(0)
摘要:纸上谈兵05 树, 二叉树, 二叉搜索树作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!树的特征和定义树(Tree)是元素的集合。我们先以比较直观的方式介绍树。下面的数据结构是一个树:树有多个节点(node),用以储存元素。每个节点可以有多个子节点(children),而该节点是相应子节点的父节点(parent)。比如说,3,5是6的子节点,6是3,5的父节点;1,8,7是3的子节点, 3是1,8,7的父节点。树有一个没有父节点的节点,称为根节点(root),如图中的6。没有子节点的节点称为叶节点(leaf),比如图中的1,8 阅读全文
posted @ 2013-03-17 17:57 小薇林 阅读(185) 评论(0) 推荐(0)
摘要:纸上谈兵04 队列 (queue)作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!队列(queue)是又一个简单而常见的数据结构。队列也是有序的元素集合。队列最大的特征是First In, First Out (FIFO,先进先出),这一点与栈(stack)形成有趣的对比。队列在生活中很常见,排队买票、排队等车…… 先到的人先得到服务并离开队列,后来的人加入到队列的最后。队列是比较公平的分配有限资源的方式,可以让队列的人以相似的等待时间获得服务。队列支持两个操作,队首的元素离开队列(dequeue),和新元素加入队尾(enqu 阅读全文
posted @ 2013-03-17 17:35 小薇林 阅读(239) 评论(0) 推荐(0)
摘要:纸上谈兵03 栈 (stack)作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!栈(stack)是简单的数据结构,但在计算机中使用广泛。它是有序的元素集合。栈最显著的特征是LIFO (Last In, First Out, 后进先出)。当我们往箱子里存放一叠书时,先存放的书在箱子下面,我们必须将后存放的书取出来,才能看到和拿出早先存放的书。 栈中的每个元素称为一个frame。而最上层元素称为top frame。栈只支持三个操作, pop, top, push。pop取出栈中最上层元素(8),栈的最上层元素变为早先进入的元素(9 阅读全文
posted @ 2013-03-17 17:31 小薇林 阅读(240) 评论(0) 推荐(0)
摘要:纸上谈兵02 表 (list)作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!表表(list)是常见的数据结构。从数学上来说,表是一个有序的元素集合。在C语言的内存中,表储存为分散的节点(node)。每个节点包含有一个元素,以及一个指向下一个(或者上一个)元素的指针。如下图所示:表: 橙色储存数据,蓝色储存指针图中的表中有四个节点。第一个节点是头节点(head node),这个节点不用于储存元素,只用于标明表的起始。头节点可以让我们方便的插入或者删除表的第一个元素。整个表中包含有三个元素(5, 2, 15)。每个节点都有一个指 阅读全文
posted @ 2013-03-17 17:17 小薇林 阅读(199) 评论(0) 推荐(0)
摘要:大数运算大数是指计算的数值非常大或者对运算的精度要求非常高,用已知的数据类型无法精确表示的值。计算大数的方法一般是用数组模拟大数的运算。之前写过,基本思想就是从低位到高位的按照加减乘除的运算规则来做,就是什么进位借位的注意点就好了。需要注意的细节问题如下: 1.数据的长短,短的那部分处理完之后,要处理多出来的那半段,还有遗留的进位。 2.做大数减法的时候需要搞清楚结果的正负号和运算时谁减去谁。 3.输出的时候不能输出高位的0, 如500-500不能得到000。 4.加法的进位只和前一位有关,但是减法的借位有时候会传递到很远,比如10000-9。 5.0就是0,不要输出什么+0 -0。... 阅读全文
posted @ 2013-03-17 15:20 小薇林 阅读(262) 评论(0) 推荐(0)
摘要:基础知识——算法复杂度时间复杂度 时间复杂度(time complexity)又称时间复杂性或计算复杂度,它是算法有效性的度量之一。 时间复杂度是一个算法运行时间的相对量度,因为执行简单操作所需要的时间因机器的软硬件环境不同而不一样,所以只讨论影响运行时间的另一个因素——算法中进行简单操作次数的多少,所以通常把算法中包含简单操作次数的多少叫做该算法的时间复杂度。 若解决一个问题的规模为n,即所处理的数据中包含n个元素,则算法的时间复杂度通常是n的一个函数f(n)。 一般只要大致计算出相应的数量级(Order)即可,所以采用大O表示,比如当f(n)为n的多项式时,取最高次幂即可。 比如... 阅读全文
posted @ 2013-03-17 15:13 小薇林 阅读(337) 评论(0) 推荐(0)
摘要:纸上谈兵01 排序算法简介及其C实现作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!排序算法(Sorting Algorithm)是计算机算法的一个组成部分。排序算法是将一个序列按照大小顺序重新排列。排序是古老但依然富有挑战的问题。Donald Knuth的经典之作《计算机程序设计艺术》(The Art of Computer Programming)的第三卷就专门用于讨论排序和查找。从无序到有序,从统计物理的角度看,就是减小了系统的熵值,增加了系统的有序度。有序这一特征是关于系统的非常有用的先验知识。因此,排序算法可以作为其 阅读全文
posted @ 2013-03-17 14:35 小薇林 阅读(239) 评论(1) 推荐(0)
摘要:A算法D算法 阅读全文
posted @ 2013-03-17 10:42 小薇林 阅读(125) 评论(0) 推荐(0)
摘要:谁是小偷?题目:警察局抓了a,b,c,d四名偷窃嫌疑犯,当中只有一个是小偷,审问结果如下:a说:“我不是小偷。”b说:“c是小偷。”c说:“小偷肯定是d。d说:“c在冤枉人。”现在已经知道4个人中3人说的是真话,一个说的是假话,那么谁是小偷?分析:如果不用代码,让读者硬做这题的话,思路往往是一个个假设过去,如假设a是小偷,然后判断4个人的话是不是3真1假。用程序判断真假很简单,但如何记录真假的个数呢,这里用到一个技巧,就是“逻辑和”,利用C语言中,Ture为1,False为0来做。这个算法实质上是模拟了人的思考方式。算法:for(int x =1;x<=4;i++){ if((x!=1) 阅读全文
posted @ 2013-03-15 00:16 小薇林 阅读(223) 评论(0) 推荐(0)
摘要:打印方阵1题目:编写一个算法,给定一个一维数组,任意输入6个整数,如5 7 4 8 9 1,然后建立一个具有以下内容的方阵,并打印出来5 7 4 8 9 11 5 7 4 8 99 1 5 7 4 8 8 9 1 5 7 4 4 8 9 1 5 77 4 8 9 1 5 读者先想想,我的分析在很下面分析:初看这个方阵会觉得又简单又复杂,规律很容易发现,每次换行时,屁股跑到头上去。但如何最简单的打印出来呢?难道必须每次换行时,整个数组从新排列吗?只要看到我下面的图形,你会马上找到最佳答案:5 7 4 8 9 1 5 7 4 8 9 15 7 4 8 9 1 5 7 4 8 9 15 7 4 8 阅读全文
posted @ 2013-03-15 00:15 小薇林 阅读(300) 评论(0) 推荐(0)
摘要:题目:在一个已经从小到大排序完成的数组中,若有一个数(可以重复)的重复次数大于整个数组个数的一半,则称这个数为主角数。现要求给定任意排序数组(所有数为正数),若存在主角数则返回这个数,若不存在则返回-1。分析:若主角数存在,则有以下特征:1、主角数至多有一个,比如1,1,3,3,3,3,4中,3是唯一的主角数,理由很简单,因为主角数定义:主角数个数超过总数一半。2、若主角数存在,则在数组的前一半数字中一定已经出现。理由是因为数字已经排好序,而且主角个数超过总数一半。3、若主角数存在,则主角数的所在跨度(即这些主角数个数大于数组个数一半),而且他们是紧密相连,因为已经排序完成。算法:int ha 阅读全文
posted @ 2013-03-15 00:14 小薇林 阅读(146) 评论(0) 推荐(0)