数据结构与算法
ZhichengYee
这个作者很懒,什么都没留下…
展开
-
单链表基础操作C++实现
Node.h:template <class T> struct Node{ T val; Node<T>* next; Node(T nVal) { val = nVal; next = nullptr; } Node(void){}};#include "Node.h"#include <iostream>us原创 2016-10-11 14:05:01 · 465 阅读 · 0 评论 -
双向链表基础操作C++实现
Node.h:template <class T> struct Node{ T val; Node<T>* next; Node<T>* prev; Node(T nVal) { val = nVal; next =prev= nullptr; } Node(void){}};#include "Node.原创 2016-10-11 15:39:15 · 474 阅读 · 0 评论 -
二叉搜索树C++实现
二叉搜索树的性质:对任何结点x,其左子树中的关键字最大不超过x.key,其右子树中的关键字最小不低于x.key。其数据元素集合包括每个节点,每个节点又包含节点的值和它的左儿子和右儿子。基本操作由:查找、最大关键字元素和最小关键字元素、插入、删除,这些基本操作耗费的时间均为θ(lgn)(与高度成正比)。遍历一棵有n个结点的二叉搜索树需要耗费θ(n)的时间,#include <iostream>usi原创 2016-10-11 17:03:46 · 541 阅读 · 0 评论 -
图的广度优先搜索与深度优先搜索
一、图的广度优先搜索(邻接链表)//Link_Graph.h#include <iostream>#include <queue>using namespace std;#define N 100#define WHITE 0#define GRAY 1#define BLACK 2queue<int> Q;struct Vertex;struct Edge{ int st原创 2016-10-11 20:59:09 · 706 阅读 · 0 评论 -
最长公共字串与最长公共子序列
最长公共子串(Longest Common Substirng)和最长公共子序列(Longest Common Subsequence,LCS)的区别为:子串是串的一个连续的部分,子序列则是从不改变序列的顺序,而从序列中去掉任意的元素而获得新的序列;也就是说,子串中字符的位置必须是连续的,子序列则可以不必连续。 如: abcdefghijklmnop abcsafjklmnopqrstuvw原创 2016-10-06 10:21:16 · 550 阅读 · 0 评论 -
动态规划:从新手到专家
**动态规划:从新手到专家** March 26, 2013 作者:Hawstein 出处:http://hawstein.com/posts/dp-novice-to-advanced.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Commons BY-NC-ND 3.0 ,转载请注明作者及出处。前言本文翻译自TopCoder上的一篇文章转载 2016-10-06 15:55:23 · 474 阅读 · 0 评论 -
最长递增子序列O(NlogN)算法
转载出处:https://www.felix021.com/blog/read.php?1587最长递增子序列,Longest Increasing Subsequence 下面我们简记为 LIS。 排序+LCS算法 以及 DP算法就忽略了,这两个太容易理解了。假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5。 下面一步一步试着找出它。 我们转载 2016-10-06 15:59:12 · 534 阅读 · 0 评论 -
二叉树的遍历
二叉树的数据结构struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* m_pRight;};前序遍历的非递归实现void PreOrder(BinaryTreeNode* root){ if (root == NULL) return;原创 2016-10-07 14:50:33 · 411 阅读 · 0 评论 -
排序算法
(1)冒泡排序冒泡排序是把小的元素往前调或者把大的元素往后调,比较是相邻的两个元素比较,交换也发生在这两个元素之间,所以相同元素的前后顺序不会改变,所以冒泡排序是一种稳定的排序算法,冒泡排序的最大时间代价、最小时间代价和平均时间代价均为θ(n²)。void BubbleSort(int array[],int n){ for(int i=0;i<n-1;i++) {原创 2016-10-07 17:33:20 · 576 阅读 · 0 评论