![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 75
VanTrickster
这个作者很懒,什么都没留下…
展开
-
算法导论-第四章-分治策略:最大子数组C++实现
#include #include #include #include #include using namespace std;array find_max_cross_subarray(int A[], int low, int mid, int high) { int left_sum = numeric_limits::min(); int max_left原创 2014-11-16 20:04:14 · 478 阅读 · 0 评论 -
算法导论-第23章-最小生成树:Prime算法(基于vector)的C++实现
#include #include #include #include using namespace std;static char elements_index{ 'a' };using P = pair;struct Vertex { char index{ elements_index++ }; int key{ numeric_limits::max() }; b原创 2014-12-09 15:30:28 · 450 阅读 · 0 评论 -
算法导论-第22章-基本的图算法:强连通分量(深度优先遍历基础上)C++实现
#include using namespace std;struct Vertex { int index{ -1 }; Vertex* next{ nullptr };};enum class COLOR { WHITE, GRAY, BLACK};struct Node { int d{}; int f{}; COLOR color{ COLOR::WHITE原创 2014-12-06 15:05:49 · 641 阅读 · 0 评论 -
第九章-顺序容器
顺序容器1 顺序容器概述顺序容器类型vector可变大小数组。支持快速随机访问。在尾部之外插入/删除元素可能很慢deque双端队列。支持快速随机访问。在头尾位置插入/删除很快list双向链表。只支持双向顺序访问。在list中任何位置插入/删除操作速度都很快forward_list单向链表。只支持单向顺序访问。在原创 2014-12-15 15:26:55 · 429 阅读 · 0 评论 -
算法导论-第32章-字符串匹配:Rabin-Karp算法C++实现
#include #include #include using namespace std;int char_to_int(char c) { return c - '0';}int module(int x, int q) { if (x < 0) { return x % q + q; } else { return x % q; }}bool is_原创 2014-11-29 20:59:20 · 778 阅读 · 0 评论 -
算法导论-第32章-字符串匹配:Knuth-Morris-Pratt(KMP)算法C++实现
#include #include #include using namespace std;void built_pai(char P[], int pai[], int m) { int k{}; pai[0] = 0; for (int q = 1; q < m; ++q) { while (k > 0 && P[k] != P[q]) { k = pai[k];原创 2014-11-29 16:10:44 · 413 阅读 · 0 评论 -
算法导论-第32章-字符串匹配:有限自动机方法(改进版本:预处理阶段复杂度为O(m*| ∑ |) )C++实现
#include #include #include using namespace std;void built_pai(char P[], int pai[], size_t m) { int k{}; pai[0] = 0; for (int q = 1; q < m; ++q) { while (k > 0 && P[k] != P[q]) { k = pai[k原创 2014-11-29 19:36:43 · 578 阅读 · 0 评论 -
算法导论-第15章-动态规划:最长公共子序列(空间复杂度改进版)C++实现
#include #include #include using namespace std;int LCS(char* A, char* B, int* C, int m, int n) { for (int i = 1; i <= m; ++i) { for (int j = 1; j <= n; ++j) { if (A[i] == B[j]) { C[i *原创 2014-11-27 16:47:28 · 950 阅读 · 0 评论 -
算法导论-第15章-动态规划:矩阵链乘法C++实现
#include #include #include #include using namespace std;long matrix_chain(long P[], long M[], int S[], size_t size) { int l{}; int j{}; int i{}; int k{}; for (l = 2; l <= size; ++l) { for原创 2014-11-26 21:59:34 · 425 阅读 · 0 评论 -
算法导论-第九章-中位数和顺序统计量:最坏情况为线性时间的选择算法C++实现
#include #include #include #include #include using namespace std;int find_mid(int M[], int size = 5) { vector v{}; for (int i = 0; i < size; ++i) v.push_back(M[i]); sort(v.begin(), v.end()原创 2014-11-22 20:44:17 · 853 阅读 · 0 评论 -
算法导论-第七章-快速排序:随机化快速排序C++实现
#include #include #include #include #include using namespace std;int partition(int A[], int begin, int end) { int pivot_value {A[end]}; int i {begin - 1}; int j {begin}; for(;j <= end - 1; ++j) { if(A原创 2014-11-19 21:26:55 · 542 阅读 · 0 评论 -
算法导论-第12章-二叉搜索树:随机二叉搜索树数据结构C++实现(前中后序遍历,插入,搜索,前后毗邻元素,最大最小值)
#include #include #include #include using namespace std;struct Node { int key{}; Node* left_son{ nullptr }; Node* right_son{ nullptr }; Node* parent{ nullptr };};class BinarySearchTree {原创 2014-11-25 20:58:13 · 527 阅读 · 0 评论 -
算法导论-第15章-动态规划:钢条切割问题自底向下方法C++实现
#include #include #include using namespace std;int cut_rod(int P[], int R[], int M[], int size) { int i{}; int j{}; for (i = 1; i < size; ++i) { int max{ -1 }; int max_index{ -1 }; for (原创 2014-11-26 19:58:06 · 587 阅读 · 0 评论 -
算法导论-第六章-堆排序:基于最大堆的排序C++实现
#include #include #include using namespace std;class Heap {private: int length; int heap_size; int* A;public: Heap(vector); ~Heap() { delete []A; } int parent(int i) { r原创 2014-11-18 22:16:15 · 473 阅读 · 0 评论 -
算法导论-第23章-最小生成树:Kruskal算法(基于按秩合并、路径压缩的不相交集合)C++实现
#include #include #include using namespace std;static char elements_index{ 'a' };using P = pair;using PP = pair;struct Element { char index{ elements_index++ }; int rank{ 0 }; Element* par原创 2014-12-09 11:42:53 · 764 阅读 · 0 评论