数据结构与算法
leeboy_wang
致力于大数据和信息安全发展
展开
-
递归算法向非递归算法转换
递归算法向非递归算法转换递归算法实际上是一种分而治之的方法,它把复杂问题分解为简单问题来求解。对于某些复杂问题(例如hanio塔问题),递归算法是一种自然且合乎逻辑的解决问题的方式,但是递归算法的执行效率通常比较差。因此,在求解某些问题时,常采用递归算法来分析问题,用非递归算法来转载 2011-07-25 09:31:56 · 1633 阅读 · 0 评论 -
非递归遍历二叉树
二叉树的遍历如果使用递归调用基本没什么问题,这里主要是讲如何使用非递归方法实现二叉树的遍历。由于递归调用程序实际上使用了栈来保存方法中的变量值,在非递归遍历的方法中我们需要基于栈的方法。先来看看这个方法 01/// 02/// 非递归中序遍历二叉树 03/// 04///转载 2011-07-25 13:51:47 · 734 阅读 · 1 评论 -
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序转载 2011-07-25 13:45:07 · 984 阅读 · 2 评论 -
codeblocks 树的遍历 递归和非递归
#ifndef RECORD_H#define RECORD_H#include using namespace std;class Record{ public: Record(); Record(str原创 2011-07-25 14:53:38 · 847 阅读 · 0 评论 -
赫夫曼树
赫夫曼编码是该思想的应用,将频率出现较多的字母定义为长度较短的二进制,将出现频率小的定义为长度大的二进制,这样有效的提高了存储能力,赫夫曼树的用处还很多,这种思想可以提高程序运行效率,如在多个判断语句中,可以将访问较多的条件放在第一个位置,减小其访问权重。原创 2011-07-28 11:26:05 · 938 阅读 · 1 评论 -
堆的详解和使用
下面一段源自huffman编码,其中体现了堆的具体过程。weight为类的成员变量。void HuffmanTree::CreateDate(){ weight = new int[5];//程序在开始时,weight指向不确定位置 //直到CreateD原创 2011-07-28 12:38:12 · 649 阅读 · 0 评论 -
堆排序实现
// 算法.cpp : 定义控制台应用程序的入口点。//对于堆排序来说,逻辑上是树的形式,实际存储的形式还是数组。只是对下标进行一定的计算获得逻辑上树的形式。//此堆的结构为0号位为根结点,没有左子树,右边接着以1号位置为根结点的子树。#include "stdafx.h"#include using namespace std;const int HEAP原创 2012-03-03 11:48:51 · 823 阅读 · 0 评论 -
快排c++实现
// 算法.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include using namespace std;void QuickSort(int e[], int first, int end);int _tmain(int argc, _TCHAR* argv[]){ srand(unsigned(time(N原创 2012-03-03 10:32:30 · 13061 阅读 · 0 评论 -
大数据:查找不重复的整数
//题目:在2.5亿个整数中找出不重复的整数,内存不足以容纳这2.5亿个整数。 #include #include /*每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义用char数组存储2-Bitmap,不用考虑大小端内存的问题映射关系如下:|00 00 00 00| //映射|3 2 1 0||00 00 00 00| //映射|7 6 5 4转载 2013-05-27 16:55:59 · 6618 阅读 · 0 评论