算法练习 与 思考
文章平均质量分 60
xiaoqiangXX
这个作者很懒,什么都没留下…
展开
-
算法练习六 动态规划 矩阵相乘
// DynamicProgram-MatrixParenthesized.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define random(x) (rand()%x) void MatrixChainOrder(int* plist,int** m原创 2011-05-10 09:24:00 · 2068 阅读 · 0 评论 -
算法练习三 优先级队列
在算法联系二写了一个堆排序,这次在堆排序的基础上写优先级队列。 这里先对上次的代码进行一下调整,可以避免一些重复工作。 调整一:形成独立的头文件 HeapHeader.h #pragma once #include #include #include using namespace std; #define random(x) (rand()%x) #define LEFT(i) ( i原创 2011-04-21 09:41:00 · 727 阅读 · 0 评论 -
算法练习二 堆排序
// HeapSort.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define random(x) (rand()%x) #define LEFT(i) ( i << 1) #define RIGHT(i) ( ( i << 1 ) + 1 ) #de原创 2011-04-20 08:53:00 · 605 阅读 · 0 评论 -
堆排序 合并排序 快速排序 简单比较
堆排序 1. 堆排序是构造一颗完全二叉树 2. 堆有最大堆与最小堆两种 3. 保持堆性质操作 当i的Left(i) 和 Right(i)都是最大堆,这时i可能小于其子女,调用保持堆性质操作,让A[i]下降使得以i为根的子树保持最大堆 4. 建堆操作 一个数组作为输入,先构建一个完全二叉树。这棵树一般不会满足最大堆性质。从i/2的节点位置开始,向原创 2011-03-20 16:03:00 · 2178 阅读 · 0 评论 -
算法练习一 合并排序
int _tmain(int argc, _TCHAR* argv[]) { int num = 10; cout << "请输入需要排序数组的长度,数组将随机生成:" <<endl; cin >> num; // 随机生成N个int型元素的数组 int* arry = new int[num]; srand( (int)time(0) ); for ( int x=原创 2011-04-19 09:12:00 · 530 阅读 · 0 评论 -
算法练习五 红黑树上 实现了左旋转、右旋转、以及插入
为了检验红黑树的正确性,这里的输入数组为 41 67 34 0 69 24 78 58 62 64 最后的输出结果为: 62 黑 L[62] = 41 红 R[62] = 69 红 L[41] = 24 黑 R[41] = 58 黑 L[69] = 67 黑 R[69] = 79 黑 L[24] = 0 红 R[24] = 34 红 红黑树的节点 #pragma原创 2011-05-01 20:09:00 · 1509 阅读 · 0 评论 -
对合并排序和快速排序的一点思考
合并排序和快速排序都是分治法思想的体现,而且都采用了递归的算法来实现。当我想将插入排序与这两种算法结合时,引发了我的一点思考。 插入排序在元素个数不多的时候具有较好的效率,所以我想在上面两种算法进行递归到较小的元素个数时采用插入排序。这个时候发现,合并排序和快速排序的递归有很大的不同。 合并排序是由底向上,不断地合并,不断地将两组元素重新排序,它要排序的两组元素个数是越原创 2011-04-26 07:30:00 · 871 阅读 · 0 评论 -
算法练习六 B树上 B树的创建,添加
B树的每个节点需要保存过个值,就需要采用数组,这里使用的是MFC的CArray来保存。经过测试如果调用CArray的SetSize方法预先分配内存,int型100W数量级耗时900ms左右,性能足够我用的。下面直接附上源码。 // BTree.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "afxtempl.h" #include原创 2011-05-26 10:14:00 · 1293 阅读 · 0 评论 -
算法练习四 二叉查找树
二叉查找树节点结构声明 class BSNode{ public: BSNode(); public: int key; BSNode* pParent; BSNode* pLeft; BSNode* pRight; }; 主要函数及主函数 // BinarySearchTree.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.原创 2011-04-29 12:26:00 · 566 阅读 · 0 评论