数据结构
雲帝
i'm fine, and you?
展开
-
C++ 几个常用排序的代码
C++ 几个常用排序的代码冒泡排序选择排序插入排序希尔排序归并排序快速排序双路快排堆排序计数排序基数排序桶排序排序算法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性冒泡排序O(n2)O(n^{2})O(n2)O(n2)O(n^{2})O(n2)O(n)O(n)O(n)O(1)O(1)O(1)稳定选择排序O(n2)O(n^{2})O(n2)O(n2)O(n^{2})O(n2)O(n2)O(n^{2})O(n2)O(1)O(1)O(1原创 2020-12-20 14:55:34 · 689 阅读 · 1 评论 -
Python 解决最小切割问题
Python 解决最小切割问题 最小切割问题 算法思想 伪代码 代码测试 代码实现 结论 给定图G =( V , E ),把图中的顶点集V 划分成两个不相交的非空顶点集B ,C 。找出顶点集合的划分方法,使切割的权值最小(切割边数最小)。 输入为图的顶点集 V 和边集 E 。输出为切割顶点集 B 、 C 和切割权值 m 。算法思想1.从图G中的边集E中随机取出不放回一条边;2.将边的两个顶点u和v合并成超级顶点z;3.删除顶点集V中的u和v;原创 2020-10-27 16:42:58 · 2305 阅读 · 0 评论 -
Python Miller Rabin 米勒-拉宾素性检验
Miller Rabin米勒-拉宾素性检验是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。卡内基梅隆大学的计算机系教授Gary Lee Miller首先提出了基于广义黎曼猜想的确定性算法,由于广义黎曼猜想并没有被证明,其后由以色列耶路撒冷希伯来大学的Michael O. Rabin教授作出修改,提出了不依赖于该假设的随机化算法。来自 https://baike.baidu.com/item/米勒-拉宾素性检验/22719763代码实现import numpy as npde原创 2020-07-26 13:07:39 · 2147 阅读 · 4 评论 -
Python 最短链路策略(ShortestLinkedHeuristic)解决TSP问题
ShortestLinkedHeuristic 最短链路策略算法基于贪心思想,每次选择一条没有被选择过的权重最小的边,检查是否与已有的边构成循环或者引起某个顶点分叉,如果没有则加入H。重复这个过程直到所有的边都被检查过。输入:无向连通图输出:TSP路径思路首先给出关于无向图的所有边和权重,以及所有顶点,接着按照ShortestLinkedHeuristic算法思路,构造路线集合H,每次从边集合E中取出权重最小的边,如果这条边与H不会形成一个循环,并且不会导致路线分叉,则将这条边加入路线集合H;直到原创 2020-07-26 12:38:37 · 1945 阅读 · 0 评论 -
C++ 二叉树
代码实现打印输出:1.生成二叉树2.打印二叉树3.先序遍历4.中序遍历5.后序遍历6.层序遍历7.二叉树结点数#include <iostream>#include <stdio.h>#include <queue>#include <windows.h>using namespace std;//生成二叉树//打印二叉树//先序遍历//中序遍历//后序遍历//层序遍历//二叉树结点数struct Node{原创 2020-06-07 12:30:15 · 267 阅读 · 0 评论 -
C++ 关键路径
代码实现#include <iostream>#include <cstdio>#include <stack>#include <string>#include <windows.h>using namespace std;int vertex_num;int edge_num;struct Edge{ int edge_from; // 顶点1 int edge_to; // 顶点2 int原创 2020-06-07 12:24:09 · 397 阅读 · 0 评论 -
C++ 链表 大数加减法
大数加法#include <bits/stdc++.h>using namespace std;class Node{public: int data; Node *next; Node() { next = nullptr; } Node (int data) { this->data = data; } Node (const Node &temp) {原创 2020-06-07 12:20:56 · 2118 阅读 · 2 评论 -
C# 判断有向图是否存在环
代码实现Program.csusing System;namespace Csharp_test{ static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { MyList mylist = new M原创 2020-06-07 01:50:39 · 496 阅读 · 0 评论 -
Python 判断无向图是否存在环
代码实现def has_cycle(G): """ 判断无向图是否有环 :param G: example {0: [1,2],1: [3], 2: []} :return:True无环,False有环 """ V = set() U = dict() cycle_set = [] def dfs(u, v): V.add(u) for x in G.get(u, []): if原创 2020-06-06 18:40:58 · 1420 阅读 · 0 评论 -
Python 随机选择算法 RandomizedSelect
随机选择算法输入:一个长度为n的数组,一个数值i,且1≤ i ≤ n输出:第i个最小元素运行环境Python3.6Numpy 1.17.3代码函数说明get_random(i, j): 获取[i, j]的随机整数RandomizedSelect(a, p, r, i): 随机选择算法RandomizedPartition(a, p, r): 随机分区Partition(a, p, r): 分区递归版本import numpy as npdef get_random(i,原创 2020-05-12 12:41:05 · 1336 阅读 · 0 评论 -
Python 舍伍德算法Sherwood
Python 舍伍德算法介绍目标代码1[随机快速排序]代码2[洗牌优化]介绍Sherwood 算法总能找到正确解并且与确定性算法一样可靠。当确定性算法在平均情形下的表现比最坏情形快很多的时候,Sherwood 算法可用来加速最坏情形的运行过程,从而提高整个算法的运行效率。目标排序问题:输入:给定 n 个元素序列[a0, a1, a2, …, an-1]输出:重新排过序的序列[a0...原创 2020-04-04 13:02:42 · 858 阅读 · 0 评论 -
Huffman编码代码
Huffman编码Huffman编码是一种可变字长编码,利用字频来作为结点的权重,代码如下,测试使用的是26个字母,频率使用的是Prime.#include <iostream>#include <stdio.h>#include <windows.h>#include <cmath>using namespace std;string...原创 2019-07-04 20:14:47 · 842 阅读 · 0 评论 -
Kruskal最小生成树算法
Kruskal最小生成树算法Kruskal是一种简单贪心路径算法,解决连通图中最短路径问题#include <iostream>#include <stdio.h>#include <windows.h>#include <cmath>#include <algorithm>#include <string>u...原创 2019-07-04 19:57:30 · 168 阅读 · 0 评论 -
字典树
字典树 字典树是一种数据结构,用于处理大量字符串。优点在于利用字符串的公共前缀,在存储时节约存储空间,并在查询时最大限度的减少无谓的字符串比较。#include &lt;iostream&gt;#include &lt;cstdio&gt;#include &lt;stack&gt;#include &lt;queue&gt;#include &l原创 2019-02-11 19:58:15 · 224 阅读 · 0 评论 -
(C/C++)初识单向链表
(C/C++)初识单向链表第一次写博客,如果写得不好请谅解,欢迎大佬们一起交流讨论。 在我初学链表的时候,会觉得书上讲解十分抽象,理解到头炸,在通过做题的方式后,对链表又产生了新的认识和看法,使用链表的方式更加灵活了,通过这篇文章与大家分享一下单向链表的一些知识。 本文章主要讲单向链表: - 创建 - 输出 - 排序 - 插入 - 删除 - 清空原创 2018-03-13 00:47:04 · 10828 阅读 · 12 评论