
算法
hiyunie
北京工业大学;18级;信息管理与信息系统专业在读
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线段树
概念线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN)。而未优化的空间复杂度为2N,因此 有时需要离散化让空间压缩。C++实现#include <原创 2020-08-09 15:44:33 · 114 阅读 · 0 评论 -
归并排序模板
输入输入的第一行包含1个正整数n,表示共有n个整数需要参与排序。其中n不超过100000。第二行包含n个用空格隔开的正整数,表示n个需要排序的整数。输出只有1行,包含n个整数,表示从小到大排序完毕的所有整数。请在每个整数后输出一个空格,并请注意行尾输出换行。输入样例 1102 8 4 6 1 10 7 3 5 9输出样例 11 2 3 4 5 6 7 8 9 10来源算法设计与分析——排序C++实现#include <bits/stdc++.h>using na原创 2020-08-07 10:11:07 · 435 阅读 · 0 评论 -
二叉搜索树(层序遍历+前\中\后遍历+求最大值)
C++语言实现#include <bits/stdc++.h>using namespace std;struct Node { int data; Node* left; Node* right;};struct Tree { Node* root;};void Insert(Tree* tree, int value) { Node* node = (Node*)malloc(sizeof(Node)); node->原创 2020-08-05 23:18:47 · 276 阅读 · 0 评论 -
冒泡+选择排序(Python实现)
Pythonfrom random import randint as rd# 冒泡排序def bubble(a): length = len(a) for i in range(length): for j in range(0, length - i - 1): if a[j] > a[j + 1]: a[j], a[j + 1] = a[j + 1], a[j]# 选择排序def selec原创 2020-07-28 09:50:16 · 148 阅读 · 0 评论 -
二叉树的建树及遍历
C++#include <bits/stdc++.h>using namespace std;const int N = 1010;int pre[N], in[N], post[N];int k;struct node { int value; node *left; node *right; node(int value = 0, node *left = NULL, node *right = NULL) : value(value), l原创 2020-07-27 10:15:07 · 206 阅读 · 0 评论 -
并查集模板
C++#include <bits/stdc++.h>using namespace std;const int VERTICES = 100010;void initial(int parent[],int ranks[]) { for(int i=0; i<VERTICES; i++) { ranks[i]=0; parent[i]=-1; }}int find_root(int x,int parent[]) {原创 2020-07-22 16:55:10 · 121 阅读 · 0 评论 -
单链表的实现(c++)
直接贴上代码/* * object:链表的实现 * author:mk_jian * date:2020-7-16 */#include <bits/stdc++.h>using namespace std;typedef struct Node { int data; Node *next;} Node;typedef struct Head { Node *root;} Head;//头插法void Insert(Head *hea原创 2020-07-16 10:33:35 · 161 阅读 · 0 评论 -
二叉树的实现(C++)
写在前面看了三四天的书加上博客以及各种视频,最后还是写出来三种遍历的递归和非递归实现!其实很多时候并不是难,只要肯花时间和多敲代码,就可以很好地理解书上的原理,有的时候敲代码比看书更有效.实现代码#include <bits/stdc++.h>using namespace std;typedef struct Node{ int data; Node* left; Node* right;} Node;typedef struct Tree{原创 2020-07-15 15:47:12 · 310 阅读 · 0 评论 -
二叉树的递归解题模板
写在前面注意数据范围不能太大,否则时间会超限例题17 4 3 8 10 9 2这课二叉搜索树就请各位自己画下实现代码(C++)#include <iostream>#include <malloc.h>using namespace std;typedef struct node{ int data; node* left; node* right;} Node;typedef struct tree{ Node* roo原创 2020-07-06 11:13:23 · 262 阅读 · 0 评论 -
二叉树的前中后三种遍历顺序
写在前面二叉树的三种遍历是数据结构与算法必须要回的知识,很多人光会理论而不懂代码的实现,或者自己很难亲自实现代码的编写。那么就需要好好思考为什么自己实现不了,是递归没写好还是对语言的不熟悉又或者是其他的原因呢?三种遍历的简单概述书上说的很清楚二叉树的遍历是如何实现的,那么我在这里就简单的说一下二叉树的先序遍历。先序遍历其实就是每次先访问一棵树的根节点,再接着访问根节点的左子树,再访问根节点的右子树,依次递归下去,每棵子树也有根节点和左右子树…简答例题(请先手写出答案再看代码的具体实现)代码的具体原创 2020-07-05 00:58:35 · 772 阅读 · 0 评论 -
插入排序法
#include <bits/stdc++.h>using namespace std;void insertedSort(int arr[],int n){ for(int i=1; i<n; i++) { for(int j=i; j>0; j--) { if(arr[j-1]>arr[j]) { swap(arr[j-1],arr[j原创 2020-06-05 18:29:45 · 221 阅读 · 0 评论 -
慕课网学习笔记-选择排序代码实现
写在前面高级程序员与码农的区别就是算法和数据结构本次使用了c++泛型编程,途中遇到了点小问题,但已经解决,鄙人不是很熟悉c++这么语言,有错误之处还请指出More code and more thinking#include <bits/stdc++.h>using namespace std;template <typename T>//The vital code of selectedsortvoid selectedSort(T arr[],int n)原创 2020-06-04 21:14:11 · 192 阅读 · 0 评论 -
n阶汉诺塔问题
# -*- coding: utf-8 -*-"""@Time : 2020/5/7 15:54@Auth : jian@File :汉诺塔.py@IDE :PyCharm@Motto:You cannot improve your past, but you can improve your future."""def hanoi(n, p1, p2, p3): if...原创 2020-05-07 16:30:50 · 311 阅读 · 0 评论