- 博客(98)
- 收藏
- 关注
原创 逻辑斯谛回归总结
一、逻辑斯谛回归用于解决什么问题?逻辑斯谛回归是经典分类方法,用于解决分类问题。二项逻辑斯谛回归模型是一种分类模型。可以解决二分类问题。二、逻辑斯谛回归为什么可以解决分类问题?逻辑斯谛分布函数为:F(x)=P(X≤x)=1/1+e−(−x−μ)/γF(x)=P(X \le x)=1/1+e^{-(-x-\mu)/\gamma}F(x)=P(X≤x)=1/1+e−(−x−μ)/γ分布函数图形是一条S型曲线,以(μ,1/2)(\mu,1/2)(μ,1/2)为中心对称。二项逻辑斯谛回归模型的条件概率
2022-02-15 21:14:20
1126
原创 Pandas数据处理总结
数据类型Pandas 的数据类型主要有Series(一维数组),DataFrame(二维数组),Panel(三维数组),Panel4D(四维数组),PanelND(N维数组)。SeriesSeries 基本结构为:pandas.Series(data=None, index=None)其中 data 是数据,index 是索引。DataFrameDataFrame 基本结构为:pandas.DataFrame(data=None, index=None, columns=None)与 Seri
2022-02-15 20:06:54
510
原创 2022年王道数据结构考研复习指导习题代码(排序)
8.3交换排序2.编写双向冒泡算法,在正反两个方向交替进行扫描,即第一趟把关键字最大的元素放在序列的最后面,第二趟把关键字最小的元素放在序列的最前面,如此反复进行。#include <iostream>#include <algorithm>using namespace std;typedef int ElemType;ElemType a[50];void BubbleSort(ElemType a[], int n){ int low = 0, h
2021-06-22 07:38:32
1111
原创 2022年王道数据结构考研复习指导习题代码(查找)
7.2.46.写出折半查找的递归算法。初始调用时,low为1,high为ST.length。#include <stdio.h>#include <stdlib.h>#include <string.h>typedef int ElemType;typedef struct { ElemType *elem; int length;} SSTable;int mid;int BinSearchRec(SSTable ST, Ele
2021-06-15 19:55:45
1025
原创 2022年王道数据结构考研复习指导习题代码(图)
6.3图的遍历2.试设计一个算法,判断一个无向图G是否为一棵树。若是一棵树,则算法返回true,否则返回false。#include <cstdio>#include <cstring>#define MaxVertexNum 100typedef char VertexType;typedef int EdgeType;typedef struct { VertexType Vex[MaxVertexNum][MaxVertexNum]; Edge
2021-06-06 19:58:03
1322
原创 2022王道数据结构考研复习指导习题代码(树与二叉树)
5.2二叉树的概念1.已知一棵二叉树按顺序存储结构进行存储,设计一个算法,求编号分别i和j的两个结点的最近公共祖先结点的值。
2021-05-16 22:01:13
1759
1
原创 KMP算法学习笔记
先总结几个概念:前缀:指除最后一个字符以外,字符串的所有头部字子串。后缀:指除第一个字符外,字符串的所有尾部字串。部分匹配值:字符串的前缀和后缀的最长相等前后缀长度。以’ababa’为例进行说明:‘a’的前缀和后缀都为空集,最长相等前后缀长度为0。‘ab’的前缀为{a},后缀为{b},最长相等前后缀长度为0。‘aba’的前缀为{a,ab},后缀为{a,ba},最长相等前后缀长度为1。‘abab’的前缀为{a,ab,aba},后缀为{a,ab,bab},最长相等前后缀长度为2。‘ababa
2021-05-14 21:24:46
393
1
原创 2022年王道数据结构考研复习指导习题代码(栈和队列)
3.1栈1.写出一个算法,判定所给的操作序列是否合法。若合法,返回true,否则返回false(假定被判定的操作序列已存入一维数组中)。
2021-05-05 23:41:35
1637
原创 2022年王道数据结构考研复习指导习题代码(线性表)
第2章 线性表2.3.1 设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <assert.h>typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next;} LNode, *LinkLis
2021-04-04 11:10:23
1694
3
原创 实现reverse函数
reverse(s)reverse(s)reverse(s),将字符串s中字符顺序颠倒void reverse(char s[]){ int i, j; char temp; i = 0; while (s[i] != '\0') ++i; --i; if (s[i] == '\n') --i; j = 0; while (j < i) { temp = s[j]; s[j] = s[i]; s[i] = temp; --i; ++j; }}.
2020-11-07 16:08:54
832
原创 Bellman-Ford算法
该算法与 Dijkstra 算法很相似,最大的不同之处只是将堆优化版本的 Dijkstra 中的优先队列改为普通队列。Bellman-Ford 算法能够求出含有负权边的图的最短路。#include <queue>#include <cstdio>#include <vector>#include <cstring>using namespace std;const int maxn = 100;const int INF = 0x3f3f3f3
2020-10-28 19:53:45
123
原创 滑动窗口/单调队列
有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。要构造单调递增以及单调递减队列,分别按以下思路进行:递增队列(输出最小值){若待插入队列的元素小于队尾元素,则弹出队尾元素直到待插入元素大于等于队尾元素为止若待插入元素大于等于队尾元素,则直接插入该元素递增队列(输出最小值)\left\{\begin{array}{l}若待插入队列的元素小于队尾元素,则弹出队尾元素直到待插入元素大于等于队尾元素为止\\\\若
2020-10-24 11:37:48
473
原创 Trie树C语言实现
实现了输入单词,判断单词是否存在以及是否存在该单词的前缀#include <string.h>#include <stdlib.h>#include <stdio.h>typedef struct trie { int isEnd; struct trie *next[26];} Trie;Trie * trieCreate(){ Trie *root = (Trie *)malloc(sizeof(Trie)); mem
2020-10-22 11:11:50
1109
原创 将输入的字符串中从a-y,A-Y的字母用其后第k个字母替代,若到z和Z后则从a和A重新开始
这里 k 取1#include <cctype>#include <string>#include <iostream>using namespace std;int main(){ string s; getline(cin, s); for (int i = 0; i < s.size(); i++) { if (isalpha(s[i])) { if (islower(s[i]))
2020-10-08 20:38:39
689
原创 素数打表(打印前n个素数到一个数组)
这里n为25#include <string>#include <iostream>using namespace std;int pr[25], pt = 0;bool isprime(int x){ for (int i = 0; pr[i] * pr[i] <= x; ++i) if (x % pr[i] == 0) return false; return true;}void getprime(){ pr
2020-09-26 10:56:14
146
原创 大数加、减、乘法C语言实现
#include <stdio.h>#include <string.h>#define N 1000char str[N];int a[N], b[N];int sum[N], difference[N], product[N];//和、差、积void Zero(int num[N]){//将数组清零 for(int i = 0; i < N; i++) num[i]=0;}int GetNum(int num[N], char str[N])
2020-09-26 10:01:23
246
原创 Ubuntu下MYSQL基本操作总结
1.登陆mysql -uroot -p然后输入密码2.查看已有的所有数据库show databases;3.使用某个数据库use databasesname;4.查看当前数据库下现有的所有表show tables;5.在当前的数据库下创建一个新表create table if not exists tablename(id int auto_increment,a varchar(50) not null,b varchar(5),c varchar(10) not nu
2020-09-16 16:01:10
896
2
原创 输出无向图中的欧拉回路
在一个图中,存在这样一条路径,它经过每条边恰好一次,并在最后一个顶点时会到第一个顶点,这样的路径叫做欧拉回路。#include <cstdio>#include <cstring>using namespace std;const int maxn = 200;struct stack{ int top, node[maxn];} s;int e[maxn][maxn], vertex;void dfs(int x){ s.node[++s.
2020-08-28 21:33:10
581
原创 找出无向图的割点
割点是将其删除后会破坏图连通性的顶点,割点存在表示该图不是双连通的。#include <queue>#include <iostream>#include <algorithm>using namespace std;const int maxn = 100;int Counter;bool visited[maxn], isArt[maxn];int Num[maxn], Low[maxn];int parent[maxn];// 邻接表ty
2020-08-28 09:55:49
285
原创 最小生成树——kruskal算法
Kruskal算法是依次选择连接图中两个顶点间权值最小的边来实现的,当所选的边产生圈时就放弃选取该边,算法首先要将所有边的权值从小到大进行排序。#include <string>#include <iostream>#include <algorithm>using namespace std;int sum;typedef struct{ int row, col, val;} matrix;typedef struct{ st
2020-08-27 15:36:08
148
原创 最小生成树——Prim算法
#include <string>#include <iostream>using namespace std;const int maxn = 100;const int INF = 1e9;//邻接表存储结构typedef struct edge_node // 边结点{ int adj_end; // 该边终点编号 int weight; struct edge_node *next_edge;} edgenode;typedef
2020-08-27 11:44:50
194
原创 Dijkstra算法(普通版本+堆优化版本)
该算法仅适用于不含负边值的图#include <set>#include <vector>#include <iostream>using namespace std;const int maxn = 10000;int dist[maxn];bool visited[maxn];vector<pair<int, int> > v[maxn];void dijkstra(){ set<pair<int,
2020-08-24 19:50:52
196
原创 拓扑排序
拓扑排序是对有向无环图的顶点的一种排序,使得如果存在一条从 viv_{i}vi 到 vjv_{j}vj 的路径,那么在排序中 vjv_{j}vj 就在 viv_{i}vi 之后出现。要实现拓扑排序,首先要准备一个邻接矩阵,如果 x,yx,yx,y 之间存在一条边,那么矩阵的 (x,y)(x,y)(x,y) 位置为1。一个记录每个顶点入度的数组,标记一个顶点是否已经被访问的数组以及返回结果的数组。拓扑排序算法的思路是首先将所有入度为 000 的顶点放入一个空的队列中,当队列不为空时,删除头部顶点
2020-08-23 16:43:09
106
原创 数学建模优化及算法总结
1.线性规划目标函数和约束条件都是线性的最优化方法称为线性最优化,也称为线性规划问题。Matlab中线性规划的标准形式为\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquadminxx=fTx\mathop{minx}\limits_{x} = f^{T}xxminx=fTxs.t={A⋅x≤b,Aeq⋅x=beq,lb≤x≤ub.s.t = \left\{\begin{array}{l}A \cdot x
2020-08-20 11:22:02
5798
4
原创 输出数据流的中位数
使用两个堆,算法思路如下图所示。class MedianFinder {public: /** initialize your data structure here. */ priority_queue<double> maxPQ; priority_queue<double, vector<double>, greater<double> > minPQ; MedianFinder() { }
2020-08-14 22:15:12
264
原创 九大排序算法原理并使用C++实现
1.插入排序假设有N个待排序元素,下标从0到N - 1。从位置p = 1开始从前往后扫描直到N - 1,在第p趟时,我们将位置p上的元素向左移直至找到它前面的元素都比它小为止。时间复杂度为O(N^2)。#ifndef INSERTION_SORT_H#define INSERTION_SORT_H#include <vector>#include <functional>using namespace std;template <typename Compar
2020-08-12 20:37:25
279
原创 找出集合中第k个最小元
#include <vector>#include <iostream>using namespace std;template <typename Comparable>void insertionSort(vector<Comparable> & a, int left, int right){ if (left == right) return; for (int p = left; p <= r
2020-08-11 14:48:59
189
原创 二项队列 C++实现
#ifndef BINOMIAL_QUEUE_H#define BINOMIAL_QUEUE_H#include <iostream>#include <vector>#include "dsexceptions.h"using namespace std;template <typename Comparable>class BinomialQueue{public: BinomialQueue() : theTrees(DEFAULT_T
2020-08-05 19:28:32
275
原创 左式堆C++实现
左式堆中每一个节点left child的零路径长至少与right child的零路径长一样。任一节点的零路径长为从该节点到一个不具有两个儿子的节点的最短路径的长。下图为一棵左式树。对左式堆的基本操作是合并,为了合并两个堆,递归的做法是先比较它们的根,递归地将具有较大根值的堆与具有较小根值的堆的右子堆合并。#ifndef LEFTIST_HEAP_H#define LEFTIST_HEAP_H#include "dsexceptions.h"#include <iostream>u
2020-08-05 13:04:25
342
原创 二叉堆C++实现
堆是一棵被完全填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入。这样的树称为完全二叉树。完全二叉树的高度为logN下取整。在堆中,对于每一个节点X,X的parent中的关键字小于(或等于)X中的关键字,根节点除外。...
2020-08-03 19:59:49
263
原创 C++ 实现AVL树
#ifndef AVL_TREE_H#define AVL_TREE_H#include <algorithm>#include <iostream>#include <stdexcept>using namespace std;template<typename Comparable>class AvlTree{public: AvlTree(): root(nullptr) {} ~AvlTree() {
2020-07-21 16:30:58
234
原创 哲学家就餐问题
哲学家就餐问题是一个著名的并发问题,这个问题的基本情况是(见下图):假定有5位哲学家围着一个圆桌。每两位哲学家之间有一把餐叉(一共5把)。哲学家有时要思考一会,不需要餐叉;有时又要就餐。而一位哲学家只有同时拿到了左手边和右手边的两把餐叉,才能吃到东西。下面是每个哲学家的基本循环:while (1) { think(); getforks(); eat(); putforks();}关键挑战是如何实现 getforks()和 putforks()函数,保证没有死锁,没有哲学家饿死以及尽可能
2020-07-20 10:39:20
255
原创 C++ 实现二叉查找树
#ifndef BINARY_SEARCH_TREE_H#define BINARY_SEARCH_TREE_H#include <iostream>#include <algorithm>#include "dsexceptions.h"using namespace std;template <typename Comparable>class BinarySearchTree{public: BinarySearchTree() : r
2020-07-19 23:42:44
115
原创 C++生成给定范围内的随机数并输出到文件
int randInt(int low, int high){ static std::random_device rd; //Will be used to obtain a seed for the random number engine static std::mt19937 gen(rd()); //Standard mersenne_twister_engine seeded with rd() std::uniform_int_distribution<>
2020-07-17 20:46:59
737
原创 计算数num的二进制表示中1的个数
如果num是奇数,那么它等于num/2的二进制表示中1的个数加1.#include <iostream>using namespace std;int number_of_one(int num){ if (num < 2) return num; return number_of_one(num / 2) + num % 2;}int main(){ int num; cin >> num; cout
2020-07-17 19:32:02
217
原创 中缀表达式到逆波兰记法的转换
转换过程:例如 ( 0! + 1 ) ^ ( 2 * 3! + 4 - 5 )用括号显示地表示优先级:{ ( [ 0! ] + 1 ) ^ ( [ ( 2 * [ 3! ] ) + 4 ] - 5 ) }将运算符移到对应右括号后面:{ ( [ 0 ] ! 1 ) + ^ ( [ ( 2 [ 3 ] ! ) * 4 ] + 5 ) - } ^去掉所有括号:0 ! 1 + ^ 2 3 ! * 4 + 5 - ^这就是逆波兰表达式了。那这个表达式该如何求值?很简单,使用栈即可。求值过程可描述为:从左
2020-07-17 16:25:52
501
原创 C++ list的简单实现
#ifndef LIST_H#define LIST_H#include <algorithm>template <typename Object>class List{private: struct Node { Object data; Node *prev; Node *next; Node(const Object & d = Object{}, Node * p = nu
2020-07-16 23:01:07
424
原创 C++ vector的简单实现
#ifndef VECTOR_H#define VECTOR_H#include <algorithm>template <typename Object>class Vector{public: explicit Vector(int initSize = 0) : theSize{ initSize }, theCapacity{ initSize + SPARE_CAPACITY } { objects = new
2020-07-15 19:43:01
219
原创 《操作系统导论》第5章作业
#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <sys/wait.h>int x;int main(int argc, char *argv[]){ printf("This program pid is (%d), x is %d\n", (int)getpid(), x); int rc = fork(); ...
2020-07-04 11:30:36
1527
原创 幂运算
#include <iostream>using namespace std;long long pow(long long x, int n){ if (n == 0) return 1; if (n == 1) return x; if (n % 2 == 0) return pow(x * x, n /2); else return pow(x * x, n / 2) * x;}int main(){ int n; long
2020-07-01 11:06:34
255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人