算法设计与分析
文章平均质量分 75
飞_飞
09级计算机本科学生
展开
-
BST的查找、插入、删除
//// main.cpp// BinarySearchTree// // 教材讲解,请参考《数据结构》第二版 严蔚敏;对应源代码,请参考《数据结构解析》高一凡,这是配套严蔚敏的一个很好的源代码教材。//#include #define N 7 /** Size of given array. */typedef int TElemType; /** Type of El原创 2011-12-26 01:15:48 · 2596 阅读 · 0 评论 -
【二分查找】之无聊BUG
在一篇博文中,我看到有个标题叫 90%的专业程序员写不出无bug的二分查找程序,,主要分析出了在3个数据中,有20来种情况得考虑,但绝大部分人都没考虑。如果超过一定的输入域,就会产生很多问题,那时就不得不考虑所有情况。在网上搜索一番后,又看到另一本书中提到了引进大众的二分查找,出现的问题如下://数组必须为有序的序列#include int BinarySearch(原创 2011-08-30 01:40:37 · 708 阅读 · 0 评论 -
彻底弄懂递归[心得](实例:归并排序)
心得:要弄懂递归,首先你得明白,堆栈的规则,函数调用的规则,本文涉及到GDB调试方法,如果你不会,参考这里http://www.wuzesheng.com/?p=1409.其实GDB调试中,你就只需要懂一点点就OK,比如backtrace,GDB调试中简写为bt即可。其次,你要不厌其烦的去单步调试,step单步,清清楚楚的看清楚每一步,你才能真正的弄懂递归原则,上课老师是不会给我们单步调试原创 2011-09-25 16:38:41 · 1540 阅读 · 0 评论 -
【归并排序(非递归)】MergeSort(non-recursion)
归并排序(非递归) postscript:本博客也有归并排序的递归算法。详见:归并排序(递归)算法思想:假设数组a为待排序数组。首先将数组a中相邻元素两两配对。用合并算法将他们排序,构成n/2组长度为2的排好序的子数组段,然后再将他们排序成长度为4的排好序的子数组段,如此继续下去,直至整个数组排好序。#include template原创 2011-09-26 00:23:52 · 1461 阅读 · 0 评论 -
最长单调"连续"递增子序列
#include #define N 9 //数组长度//计算序列a[N]的最长单调连续递增子序列,设最长序列为a[i]~a[j];template void Longest(int& besti, int& bestj, int n, T a[]) { int max=0; for (int k=0; k<n; k++) { //以k为原创 2011-10-08 01:08:47 · 1630 阅读 · 0 评论 -
迷宫(non-recursion)(即栈实现)
/*** @file Stack.h* Test environmentof IDE: VC++ 6.0* 顺序栈基本操作的实现 */#ifndef _STACK_H#define _STACK_H#define STACK_INIT_SIZE 100 //初始分配量#define STACK_INCREAMENT 10 //分配增量typedef struct SqSta原创 2011-12-26 01:18:15 · 1014 阅读 · 0 评论 -
利用二叉树彻底弄懂[汉诺塔]递归原理
大三了,还没实现过汉诺塔,今天实现了他。以前一直用函数递归调用的方法一点一点的推,有时候还推得稀里糊涂。在学完二叉树之后,又写了一遍汉诺塔的递归实现,仔细一看代码的结构,和二叉树的中序遍历一模一样,我恍然大悟。在利用二叉树的时候,先以两个盘子的情况模拟,然后逐渐加多,这样,就可以得到满二叉树,树的一些性质我就不用多说了。#include /* 借助递归树这个原创 2011-09-02 16:02:15 · 4160 阅读 · 1 评论 -
简单空间换时间排序的例子
/* 空间换时间的例子: 在给定的无序的一组数,将其从小达到排序。 要求:线性时间排序,时间复杂度为O(n) 思路: 先扫描整个数组,找出最大值max,开辟temp[max]的数组。再次扫描数组, 但这次需要做的工作是a[i]=i,排序ok,可以看出来浪费了90个空间,这 就是典型的空间换时间的例子。时间复杂度在O(n). */#include #define N 10v原创 2011-09-04 22:33:13 · 1508 阅读 · 0 评论 -
全排列
//产生所有前缀是list[0:k-1],且后缀是list[k:m]的全排列的所有排列.//调用Perm(list,0,n-1)则产生list[0:n-1]的全排列./*要求n个正整数{1,2,…,n}组成的集合的全排列,我们可以先求出n个数中扣除1后n-1个数的全排列, 然后求出n个数中扣除2后n-1个数的全排列,一直到n个数中扣除n后n-1个数的全排列, 则这n种情况的所有的n-1个原创 2011-09-25 10:49:19 · 644 阅读 · 0 评论 -
数据结构复习之[循环队列]
这算是我第一篇原创吧,就写一写我今天的学习笔记。以下复习笔记来自郝斌老师的数据结构视频,在verycd下免费下载,通俗易懂的特点是初学者不可多得的。线性结构的两种常见应用之二队列定义:一种可以实现“先进先出”的存储结构。分类:离散(链式)队列--用链表实现静态(连续)队列--用数组实现原创 2011-08-28 03:47:03 · 2285 阅读 · 0 评论