
数据结构与算法(C++实现)
文章平均质量分 59
wenjiashun
这个作者很懒,什么都没留下…
展开
-
分治法解决最大子数组问题
利用分治法解决最大子数组问题(对给定的数组得到该数组中具有最大和的子数组)/* * 对于给定的整数数组A,求出数组中具有最大和的子数组,最大和以及左右下标 * 思路:采用分治的方法,将数组分为两部分,则有最大和的子数组共有三种情况 * 在数组左边,在数组右边,跨越数组中点 */#include <iostream> using namespace std;//存放左右边界值以及sum值的结构原创 2015-04-16 00:06:31 · 1773 阅读 · 1 评论 -
堆排序
//heapSort.cpp #include #include #include #define NUMBER 9 using namespace std; struct heapType { int heapArray[NUMBER+1];//数组中存放20个元素,从1到20; int arraySize;//数组长度 int heapSize;//建的堆中元素个数 }; v原创 2014-08-28 10:22:58 · 402 阅读 · 0 评论 -
堆排序_最大优先队列
//maxPriorityQueue.cpp //优先队列支持的操作:insert ,maximum,extract,increaseKey, #include #include #include #define NUMBER 100 #define NUM 6 using namespace std; struct heapType { int heapArray[NUMBER];原创 2014-08-28 12:47:18 · 372 阅读 · 0 评论 -
快速排序
//quickSort.cpp /* 快速排序用到分治思想,为原址排序,不需要进行merge操作 第一步:分解:数组A[p...r]被划分为两个子数组A[p...q]和A[q+1...r], 使得A[p...q-1]中元素均小于A[r],A[q+1...r]中元素均大于等于A[r] 第二步:解决:通过递归调用快速排序,对子数组A[p...q-1]和A[q+1...r]进行排序 第三步:合并:因为子原创 2014-08-28 22:46:39 · 374 阅读 · 0 评论 -
双向链表的实现
#include "Node.h" #include using namespace std; class LinkedList { private: int listLength;//链表长度 bool isEmpty;//记录链表是否为空表 Node *headNode; public: LinkedList();//构造函数 int getListLength(){return原创 2014-08-31 15:51:23 · 500 阅读 · 0 评论 -
快速排序的随机化版本
//就是从p到r之间产生一个随机数,i将A[i]和A[r]交换就行 #include #include #include #define NUMBER 20 using namespace std; int random(int p,int r);//产生p到r之间的随机数 int partition(int *sPtr,int p,int r);//将数组进行划分 int randomi原创 2014-09-01 21:09:45 · 572 阅读 · 0 评论 -
计数排序
/* 计数排序就是在n个数(均小于某一个值k)利用k来进行排序, 不涉及到元素之间的比较 */ #include #include #include #include #define NUMBER 1000 //数组中元素的范围 #define ARRAYLENGTH 1000 using namespace std; void countingSort(const int *,i原创 2014-09-02 21:25:56 · 370 阅读 · 0 评论 -
基数排序
//基数排序 #include #include #include #include #define KEYNUMBER 3//整型数的位数 #define RADIX 10//每位数字从0到9共有九个 #define NUMBER 100 using namespace std; int getNumInPos(int,int); void radixSort(int *,int);原创 2014-09-07 19:45:44 · 379 阅读 · 0 评论 -
动态规划_钢条切割最优策略
/* *钢条切割问题:给定一段长度为n英寸的钢条和一个价格表pi(i=1,2,...) *(表示长度为1英寸2英寸...的钢条价格)求切割方案,使得销售收益r最大。 *注意:如果长度为n英寸的钢条价格p[n]足够大,最优解可能就是完全不需要切割 */ #include using namespace std; #define MAXLENGTH 10//钢条最大长度 int rArr原创 2014-09-26 15:37:20 · 1275 阅读 · 3 评论 -
二叉搜索树基本功能实现
/*二叉搜索树中的节点类 *Node.h */ # ifndef _NODE_ #define _NODE_ class Node { private: int value;/*节点中存放的元素值*/ Node *parentNode;/*所指向的父节点指针*/ Node *leftChildNode;/*左孩子节点指针*/ Node *rightChildNode;/*右孩子节点指针原创 2014-11-05 13:31:14 · 513 阅读 · 0 评论 -
分治策略求解子数组最大并返回下标
//寻找最大子数组的和,分成三种情况来讨论 /* 在数组A[low...high]中,任何连续子数组A[i...j]的位置有三种 一、完全位于数组A[low...mid]中,因此low<=i<=j<=mid 二、完全位于数组A[mid+1...high]中,因此mid<i<=j<=mid 三、跨越了中点,因此low<=i<=mid<j<=high */ class FindMaxSubarray原创 2017-04-09 11:53:22 · 382 阅读 · 0 评论