摘要:快速排序快速排序:通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理; 交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复,一趟排序完成,左边就是比中轴小的,右边就是比中轴大的, 然后再用分治法,分别对这两个独立的数组进行排序。快速排序是对冒泡排序的一种本质改进。不稳定,时间复杂度 最理想 O(n) 最差时间O(n^2) 平均复杂度:O(NlogN)#include #include us... 阅读全文
【转】sizeof 总结
2013-08-13 17:37 by 北漂男孩, 232 阅读, 0 推荐, 收藏, 编辑
摘要:[cpp]view plaincopy//练习.cpp:定义控制台应用程序的入口点。#include"stdafx.h"#includeusingnamespacestd;classA{public:A(){}A(inta):m_a(a){}virtualvoidprint(){cout<<"A::"<<m_a<<endl;}private:intm_a;};classB:publicvirtualA{public:B(){}B(inta,intb):A(a),m_b(b){}virtualvoidprint(){A: 阅读全文
二叉树1
2013-08-13 17:02 by 北漂男孩, 156 阅读, 0 推荐, 收藏, 编辑
摘要:1、二叉树的定义二叉树是另一种形式的树,特点是每个结点至多有2课子树。二叉树有左右之分,次序不能颠倒。2、二叉树与度为2的树: 度为2的树最少有3个结点,而二叉树可以为空;度为2的有序树的孩子结点的左右次序是相对于另一孩子结点而言的。二叉树不管在什么情况下,都需要区分左右次序,而度为2的树,如果有一个结点只有一个孩子结点,这个孩子结点酒不存在左右次序。3、满二叉树: 一颗高度为h,并且含有2h -1个结点的二叉树称为满二叉树。4、完全二叉树:设一个高度为h,有n个结点的二叉树,当且仅当其每一个机诶单都为高度为h的满二叉树种的编号为1-n的结点一一对应时,称为完全二叉树。5、二叉树的排序: 先序 阅读全文
树、二叉树、森林的变换
2013-08-13 16:50 by 北漂男孩, 209 阅读, 0 推荐, 收藏, 编辑
摘要:1、树倒二叉树: 每个结点左指针指向它的第一个孩子结点,右指针指向它在树种的相邻兄弟结点,左孩子右兄弟。 阅读全文
拓扑排序
2013-08-13 11:59 by 北漂男孩, 835 阅读, 0 推荐, 收藏, 编辑
摘要:拓扑排序 1.拓扑序列:设G=(V,E)是一个具有n个顶点的有向图,V中的顶点序列v1, v2, …, vn称为一个拓扑序列,当且仅当满足下列条件:若从顶点vi到vj有一条路径,则在顶点序列中顶点vi必在顶点vj之前。 2.拓扑排序的规则: ⑴ 从AOV网中选择一个没有前驱的顶点并且输出; ⑵ 从AOV网中删去该顶点,并且删去所有以该顶点为尾的弧; ⑶ 重复上述两步,直到全部顶点都被输出,或AOV网中不存在没有前驱的顶点。 3.示例: 4.实现: (1)设计数据结构: 图的存储结构:采用邻接表存储 ,在顶点表中增加一个入度域。 栈S:存储所有无前驱的顶点... 阅读全文
堆栈
2013-08-13 11:15 by 北漂男孩, 244 阅读, 0 推荐, 收藏, 编辑
摘要:一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放。4、文字常量区 —常量字符串就是放在这里的。 阅读全文
图
2013-08-13 10:54 by 北漂男孩, 168 阅读, 0 推荐, 收藏, 编辑
摘要:广度优先搜索 BFS Breadth First Search 分层相似深度优先搜索 DFS利用先序深度优先是一个递归,从一个点开始,搜索所有和这个点相连的点,再从这些点中的一个开始,搜索所有和这个点相连的点。。。广度优先是一个先进先出的队列,从一个点开始,将这个点加入到队列中,找到与队列头结点相连的点,加入到队列中,将头结点删掉,再找与当前队列的头结点相连的点,加入到队列中,将头结点删掉。。。 阅读全文
二分查找法
2013-08-13 10:45 by 北漂男孩, 190 阅读, 0 推荐, 收藏, 编辑
摘要:1、二分查找法 二分查找法有一个很重要的前提条件:即待查找的序列必须是已经排好序的。 假设元素序列是按升序排列,将序列中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将序列分成前、后两个子序列,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子序列,否则进一步查找后一子序列。重复以上过程,直到找到满足条件的记录,查找成功,返回元素在序列中的索引,或直到子序列不存在为止,此时查找失败,返回-1。代码示例如下:int find2(int *array,int n,int val){ if (nval) end=mid-1; else begin... 阅读全文