算法与数据结构
develbai
所有时间管理的背后,是良好的习惯,而良好习惯养成的背后,是惊人的意志力
展开
-
C++实现环形队列
C++实现环形队列#include <cstdio>#include <algorithm>#include <iostream>#include <string>using namespace std;class Customer{public: Customer(string name = "", int age = 0) { m_strName = n原创 2017-02-05 16:43:57 · 705 阅读 · 0 评论 -
五大常用算法:分治算法
一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅里叶变换(快速傅里叶变换)……任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,原创 2017-04-13 15:45:12 · 405 阅读 · 0 评论 -
五大常用算法啊:贪心算法
一、基本概念所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择贪心策略必须具备无后效性,即某个状态以后的过程中不会影响以前的状态,只与当前状态有关。所以对所采用的贪心策略一定要仔细分析其是否满原创 2017-04-16 09:31:48 · 348 阅读 · 0 评论 -
常用排序算法代码整理
Bubble Sort//// Created by tim-berners-bai on 17-4-17.//#ifndef SORTALGORITHMS_BUBBLESORT_H#define SORTALGORITHMS_BUBBLESORT_H#include <iostream>using namespace std;template <typename T>void bubble原创 2017-04-29 10:11:47 · 290 阅读 · 0 评论 -
五大常用算法:分支限界法
一、基本描述类似于回溯法,也是一种在问题的解空间树 T 上搜索问题解的算法,但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是则是找出满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。- 分支搜索算法所谓“分支”就是采用广度优先的策略,一次搜索E-节点的所有分支,也就是所原创 2017-04-18 11:05:37 · 3763 阅读 · 0 评论 -
五大常用算法:动态规划
一、基本概念动态规划过程是:每次决策依赖于当前状态,有随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。二、基本思路及策略基本思想于分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的原创 2017-04-17 18:22:51 · 697 阅读 · 0 评论 -
C++实现Prim与Kruskal最小生成树算法
C++实现Prim与Kruskal最小生成树算法Edge.h#ifndef EDGE_H#define EDGE_H#include <iostream>using namespace std;class Edge{public: Edge(int nodeIndexA = 0, int nodeIndexB = 0, int weightValue = 0); ~Edge()原创 2017-02-11 00:31:43 · 507 阅读 · 0 评论 -
C++实现图的广度优先遍历与深度优先遍历
C++实现图的广度优先遍历与深度优先遍历Node.h#ifndef NODE_H#define NODE_Hclass Node{public: Node(char data = 0); char m_cData; bool m_bIsVisited;};Node::Node(char data){ m_cData = data; m_bIsVisit原创 2017-02-09 22:20:13 · 1541 阅读 · 0 评论 -
泛型编程Selection Sort 选择排序
selection sort#include <iostream>#include <algorithm>using namespace std;void selection_sort(int arr[], int n){ for(int i = 0; i < n; i++) { //寻找[i,n)区间里的最小值 int minIndex =原创 2017-01-17 13:41:31 · 366 阅读 · 0 评论 -
C++实现二叉树链表
C++实现二叉树链表Node.h#ifndef NODE_H#define NODE_H#include <iostream>using namespace std;class Node{public: Node(); ~Node(); Node *SearchNode(int nodeIndex); void DeleteNode(); void P原创 2017-02-09 00:17:26 · 2368 阅读 · 0 评论 -
C++实现二叉树数组
C++实现二叉树数组Tree.h#ifndef TREE_H#define TREE_H#include <iostream>using namespace std;class Tree{public: Tree(int size, int *pRoot); //创建树 ~Tree();原创 2017-02-08 17:29:44 · 1304 阅读 · 0 评论 -
C++实现线性表之单链表
C++实现线性表之单链表Node.h#ifndef NODE_H#define NODE_H#include <iostream>using namespace std;class Node{public: int data; Node *next; void printNode();private:};void Node::printNode(){ co原创 2017-02-07 16:03:40 · 440 阅读 · 0 评论 -
C++实现线性表之顺序表
C++实现数据结构之线性表List.h#ifndef LIST_H#define LIST_H#include <iostream> using namespace std;class List{public: List(int size); //创建线性表 ~List();原创 2017-02-06 23:03:18 · 658 阅读 · 0 评论 -
C++实现栈应用之进制转换
C++实现栈应用之进制转换MyStack.h#ifndef MYSTACK_H#define MYSTACK_H#include <iostream>using namespace std;template <typename T>class MyStack{public: MyStack(int size); //分配内存初始化空间,设定栈容量,栈顶原创 2017-02-06 15:23:26 · 1206 阅读 · 0 评论 -
泛型编程C++实现栈
泛型编程C++实现栈Coordinate.h 头文件#include <iostream>#include <ostream>using namespace std;class Coordinate{ friend ostream &operator<<(ostream &out, Coordinate &coor);public: Coordinate(int x = 0原创 2017-02-05 22:55:54 · 635 阅读 · 0 评论 -
五大常用算法:回溯法
1、概念回溯算法实际上是一个类似枚举的搜索尝试过程, 主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种优选搜索法,按选优条件向前搜索,已到达目标。但当搜索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术称为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的的问题都可以使用回溯法原创 2017-04-09 19:17:57 · 999 阅读 · 0 评论