自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(114)
  • 资源 (1)
  • 收藏
  • 关注

原创 图解法----十大排序算法汇总----(总有你需要的那种)

引言 十大排序算法分别为:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序,基数排序、桶排序十种排序算法一共可分为两类。分别是比较排序和非比较排序。比较排序:通过比较各个数的大小来交换各个数顺序,达到排序的效果。 非比较排序:不用通过比较,就可以达到排序的效果,平均时间复杂度比比较排序低。十种排序算法的复杂度稳定性:比如对期末数学成绩进行排序,假如小明和小红都是95分,在排序前小明在小红的前面,如果排序后,小明仍然在小红的前面,那就说明这个排序..

2020-06-19 18:19:03 2355 2

原创 用字符串巧解大菲波数---HDU--1715

题目Problem DescriptionFibonacci数列,定义如下:f(1)=f(2)=1f(n)=f(n-1)+f(n-2) n>=3。计算第n项Fibonacci数值。Input输入第一行为一个整数N,接下来N行为整数Pi(1<=Pi<=1000)。Output输出为N行,每行为对应的f(Pi)。Sample Input5 1 2 3 4 5Sample Output1 1 2 3 5解题思路1、这次用的...

2020-08-09 22:49:42 370

原创 经典算法(十)----桶排序----图解法让你快速入门

引言前面学习了计数排序和基数排序,其实桶排序就是他们的升级版,在这篇文章中主要会说明桶排序的思想,就不放桶排序的代码了,因为桶排序用的较少,至于为啥他用的很少,下面会说。这篇文章从一下两个角度分析桶排序桶排序的思想 桶排序的问题一、桶排序的思想假如我们对0.0 0.12 0.18 0.93 0.45 0.76 0.89 0.03 0.55 0.98 0.67 1.0这十二个数排序。桶排序的思想就主要分三步设计好有几个桶,每个桶的范围都为多少 对每个桶进行...

2020-06-18 21:45:08 1721

原创 经典算法(九)----基数排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你十个数 让你进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用冒泡排序、希尔排序、计数排序、基数排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是基数排序 在学基数排序的时候,一定要先把计数排序学会,因为在代码中利用了计数排序的思想,如果计数排序不太理解,可以点击后面的连接,先把计数排序学会。https://blog.csdn.net/weixin_448...

2020-06-17 22:27:54 816

原创 经典算法(八)----计数排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你十个数3,2,2,5,4,0,5,4,5,1让你进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用冒泡排序、希尔排序、计数排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是计数排序本文将从以下几个问题对计数排序进行分析和讲解:什么是简单的计数排序?它存在哪些问题? 怎样解决简单计数排序存在的问题? 计数排序的完整代码 计数排序的代码详解。 ...

2020-06-17 16:48:54 6951 6

原创 经典算法(七)----堆排序----图解法让你快速入门

引言 相对于其他的排序算法,堆排序可以说算数比较难理解的,而且学习堆排序之前排序提前学习堆的定义。 不过不用担心,这篇文章会用通俗易懂的方式让你尽可能的学会堆排序!!!本文将从以下几个问题对堆排序进行分析和讲解:预备知识:堆是什么? 堆排序是什么?(★重要★) 堆排序的具体过程是什么?(★★★重要★★★) 堆排序的代码实现。 堆排序的代码详解。堆是什么?说起堆,不得不的说起二叉树。先看二叉树的定义百度百科的二叉树定义:二叉树(...

2020-06-16 23:27:51 774 1

原创 经典算法(六)----快速排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用插入排序、希尔排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是快速排序本文将从以下几个问题对快速排序进行分析和讲解:什么是快速排序? 快速排序的大概过程是什么? 怎样用代码实现快速排序? 快速排序的代码详解。什么是快速排序?下面看...

2020-06-16 15:07:18 3496 3

原创 经典算法(五)----归并排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用插入排序、希尔排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是归并排序本文将从以下几个问题对归并排序进行分析和讲解:什么是归并排序? 归并排序的大概过程是什么? 怎样用代码实现归并排序? 归并排序的代码详解。什么是归并排序?下...

2020-06-15 22:27:23 1129

原创 经典算法(四)----希尔排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用插入排序、希尔排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是希尔排序本文将从以下几个问题对希尔排序进行分析和讲解:什么是希尔排序? 希尔排序的大概过程是什么? 怎样用代码实现希尔排序? 希尔排序的代码详解。 什么是插入排序?...

2020-06-14 23:43:18 1012 2

原创 经典算法(三)----插入排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用插入排序、选择排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是插入排序本文将从以下几个问题对冒泡排序进行分析和讲解:什么是插入排序? 插入排序的大概过程是什么? 怎样用代码实现插入排序? 选择排序的代码详解。什么是插入排序?下面...

2020-06-14 20:35:15 784

原创 经典算法(二)----选择排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ?答案是多种多样的,比如用冒泡排序、选择排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是选择排序本文将从以下几个问题对冒泡排序进行分析和讲解:什么是选择排序? 选择排序的大概过程是什么? 怎样用代码实现选择排序? 选择排序的代码详解。什么是选择排序?下面看...

2020-06-14 14:41:21 840

原创 经典算法(一)----冒泡排序----图解法让你快速入门

引言 只要设计到数据,就会涉及到数据的排序问题,比如给你随机给你五个整数 3,1,5,2,4 。让你从小到大进行排序,那我们该怎样才是实现对这些整数的排序呢 ? 答案是多种多样的,比如用冒泡排序、选择排序、堆排序、归并排序、快速排序等等,这些排序方法都可以实现对整数排序,而这篇文章要讲的就是冒泡排序本文将从以下几个问题对冒泡排序进行分析和讲解:什么是冒泡排序? 冒泡排序的大概过程是什么? 怎样用代码实现冒泡排序? 冒泡排序的代码详解。什么是冒泡排序?下面看...

2020-06-13 21:38:26 1260

原创 力扣:三数之和---双指针解法---C++实现

题目链接 https://leetcode-cn.com/problems/3sum/题目描述给你一个包含 n 个整数的数组nums,判断nums中是否存在三个元素 a,b,c ,使得a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2]]...

2020-06-12 20:46:17 269

原创 C++菜鸟教程---二叉树的创建以及三种遍历----针对指针内存空间详解

引言 说起二叉树,大部分为可能都或多或少知道一些他的性质,但如果让你用代码创建一个二叉树或遍历某个二叉树可能就变得困难了一些,下面就根据这两个问题进行展开,首先提问一个问题?如果你想创建一颗二叉树,那这棵二叉树各个结点的值你该怎样保存,保存之后又该怎样取出?如果上面一个问题搞清楚了,那么二叉树的创建就不远了创建二叉树的结点一颗二叉树,肯定有一个个的结点,每个结点里面肯定都存有 数据 和 指针(左孩子指针和右孩子指针),下面先看结点的数据结构类型//二叉树结点ty...

2020-06-09 22:55:45 749

原创 通俗易懂且最快的理解KMP算法---详解

引言 首先问几个问题?为什么要有KMP算法? 相对于朴素算法的过程,KMP算法的过程有哪些不同? 什么是字符串的前缀和后缀,它到底有啥用? KMP算法中的next数组是什么?为什么要用next数组? next数组的求解过程?怎样用代码实现出来? KMP算法怎样用代码实现?我认为只要弄清楚上面的几个问题,KMP算法也就迎刃而解了。本文就从上面几个问题一个个的铺开一、为什么要有KMP算法? 在字符串中有一类问题是从查找子串问题,假如现在有一个主串(较长一些)和一...

2020-06-08 21:29:06 1237

原创 用栈实现中缀表达式到后缀表达式的转变--------C++实现(详解)

变换规则从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为中缀表达式的一部分;若是符号,则判断符号的优先级,是右括号或者优先级不高于栈顶符号的优先级(乘除优先于加减),则栈顶元素一次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。规则具体解释一、若是数字,就直接输出,这个没啥问题。二、如果符号就分情况:若符号为 左括号( ,就直接入栈。 若符号为 右括号 ),那就去遍历栈,写一个循环依次去遍历栈顶元素,如果栈顶元素不是左括号 ( 。那么就把栈顶元素输出,...

2020-06-06 21:07:17 2673 1

原创 使用栈计算后缀表达式的计算-----C++实现(详解)

后缀表达式的计算原理规则:从左到右遍历表达式的每个数字和符号,遇到的是数字就进栈,遇到的是符号,就将栈顶的两个数字依次出栈,进行运算(运算规则:后出栈的数字1 符号 后出栈的数字2 ),再将运算结果进栈,知道获得最终结果。样例:后缀表达式例子:9 3 1 - 3 * + 10 2 / +计算过程:数字9入栈 数字3入栈 数字1入栈 遇到了 - 运算符,,这时候计算 3 - 1 = 2(注意数字的顺序,谁是减数,谁是被减数),数字2入栈 ...

2020-06-06 14:49:06 9694 2

原创 用C++类实现双向链表的功能

实现的功能无参构造和有参构造,其中无参构造只创建了一个头结点。有参构造中实现了在定义单链表的对象时,可以指定出单链表的长度,并且输入对应单链表每个结点的值。 遍历函数,通过这个遍历,可以打印出单链表对象中所有结点的值(不包括头结点)。 获取长度函数,通过这个函数,可以求出单链表的长度,这里的长度不包括头结点,假如链表中有一个结点(不包括头结点),那么他的长度就是1。 插入结点函数,这个函数有两个参数,分别为要插入结点的位置(比如这个为位置为2,那么要插入节点的位置就是在链表中第二个结点后面插入一.

2020-06-05 16:55:40 1281

原创 用C++类实现单链表的基本功能(附带开辟内存空间详解)

实现的功能无参构造和有参构造,其中无参构造只创建了一个头结点。有参构造中实现了在定义单链表的对象时,可以指定出单链表的长度,并且输入对应单链表每个结点的值。 遍历函数,通过这个遍历,可以打印出单链表对象中所有结点的值(不包括头结点)。 获取长度函数,通过这个函数,可以求出单链表的长度,这里的长度不包括头结点,假如链表中有一个结点(不包括头结点),那么他的长度就是1。 插入结点函数,这个函数有两个参数,分别为要插入结点的位置(比如这个为位置为2,那么要插入节点的位置就是在链表中第二个结点后面插入一.

2020-06-05 11:50:47 3481 2

原创 C++容器篇----map的使用方法

map的构造和赋值#include<iostream>#include<map>using namespace std;//map容器 构造和赋值void printMap(map<int, int>& m){ for (map<int, int>::iterator it = m.begin(); it != m.end(); it++) { cout << "key = " << (*it).f.

2020-06-02 22:44:32 372

原创 C++容器篇-----set的使用方法

set的构造和赋值#include<iostream>#include<set>using namespace std;//set容器的构造和赋值void printSet(set<int>& s){ for (set<int>::iterator it = s.begin(); it!= s.end(); it++) { cout << *it << " "; } cout << .

2020-06-02 21:13:21 352

原创 C++容器篇-----list的使用方法

list的构造函数#include<iostream>#include<list>using namespace std;//list容器构造函数void printList(const list<int>& l){ for (list<int>::const_iterator it = l.begin(); it != l.end(); it++) { cout << (*it) << " ";.

2020-06-02 17:55:54 375

原创 C++容器篇-----stack的使用方法

stack的常见接口#include<iostream>#include<stack>using namespace std;//栈stack容器void test01(){ //特点符合先进后出的数据结构 stack<int> s; //入栈 s.push(10); s.push(20); s.push(30); s.push(40); //只要栈不为空,查看栈顶,并且执行出栈操作 while (!s.empty()) { .

2020-06-02 13:20:01 161

原创 C++容器篇-----queue的使用方法

queue的常用接口#include<iostream>#include<queue>#include<string>using namespace std;class Person{public: Person(string name, int age) { this->m_Name = name; this->m_Age = age; } string m_Name; int m_Age;};void tes.

2020-06-02 13:17:53 160

原创 C++容器篇-----string的使用方法

string的构造函数#include<iostream>#include<string>using namespace std;//string的构造函数void test01(){ string s1;//默认构造 const char* str = "hello world"; string s2(str);//把c_string转换成string cout << "s2= " << s2 << endl;.

2020-06-01 23:27:38 228

原创 C++容器篇-----vector的使用方法

vector的构造函数#include<iostream>#include<vector>using namespace std;void printVector(vector<int> &v){ for (vector<int>::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << .

2020-06-01 23:14:37 334

原创 C++容器篇-----deque的使用方法

deque的构造函数#include<iostream>#include<deque>using namespace std;void printDeque(const deque<int>& d){ for (deque<int>::const_iterator it = d.begin(); it != d.end(); it++) { //容器中的数据不可以修改了 cout << *it <<.

2020-06-01 23:07:05 334

原创 职工管理系统源代码-----C++类实现----文件输入输出-----实现过程超详细讲解

前言如果你仅仅是想弄一份职工管理系统的源代码,不想知道过程是怎样实现的,那你可以直接拉到这篇文章的最底部找源代码,注意:这个实现过程涉及了多个头文件,cpp文件,具体创建的方法见代码下面的详解 这个实现过程是用C++的类实现的,而且还涉及到了文件的输入和输出。 这篇文章首先会讲解这个职工管理系统能实现的功能,其次会讲解过程是怎样实现的,然后是源代码,最后就是源代码的使用说明。职工管理系统的功能上面这个图片就是这个职工管理系统的功能图,输入对应的数字就能实现对应的功能。这个项目的.

2020-05-31 12:01:20 3174 2

原创 指针专题-----------再探指针(二)

一、指针的那些事 说起指针,关于指针的四个方面一定要清楚:指针的类型 指针指向的类型 指针的值 指针本身所占的内存空间1、指针的类型<1> int* p;<2> int** p;<3> char* p;<4> double* p[3];无论上面定义的指针类型你是否认识,有一个判断指针的万能公式----把指针名去掉,剩下的就是是指针的类型比如int** p; 这个指针自身的类型就是 int** (去掉指针名...

2020-05-29 23:00:08 174

原创 指针专题---------初探指针(一)

指针的作用 说起指针,大家可能或多或少知道一些,指针就是可以指向一个内存空间,从而利用指针

2020-05-29 20:40:45 148

原创 C++的内存分区模型--------代码区-------全局区--------栈区----------堆区

内存分区模型 C++在程序执行时,将内存大方向分为四个区域代码区:存放函数体的二进制代码,由操作系统进行管理。 全局区:存放全局变量和静态变量以及常量 栈 区:由编译器自动分配释放,存放函数的参数值、局部变量等 堆 区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区存在的意义:赋予不同的生命周期,给我们更大的灵活编程二、代码区 代码区顾名思义是用来存放代码的,在程序编译阶段(未执行exe程序)会出现,用来存放我们写代码...

2020-05-29 17:48:32 317

原创 C++实战项目-------通讯录管理系统

运行效果思路分析 1.这是一个比较基础的的项目,主要是把思路理清,利用switch实现就可以。 2.这里采取的是利用指针进行函数传从,把实参传给形参的过程就好比定义一个指针的过程,在形参里进行定义指针,把实参传给形参的过程可以看成指针给指针赋值的过程,关于指针传参不懂得,点击这里!!!代码#include<iostream>#define MAX 1000using namespace std;//设计联系人的结构体struct Person{ ...

2020-05-20 20:16:44 344

原创 指针作为函数参数的详解-------让你彻底弄懂指针传参问题!!!

最经典的案例 写一个交换函数,实现两个数的交换#include<iostream>using namespace std;void swap1(int a,int b){ int temp=a; a=b; b=temp; cout<<"函数内交换结果:"<<endl; cout<<"a 的值:"<<a<<endl; cout<<"b 的值:"<<b<<end...

2020-05-19 16:44:44 652

原创 常量指针、指针常量和“常量指针常量”详解

常量指针常量指针:指针指向的值不能修改,但是指针的指向可以修改常量指针定义方式为:const int *p=&a;#include<iostream>using namespace std;int main(){ int a=100; int b=200; //常量指针,指针的指向可以更改,但是指针指向的值不能改 const int *p=&a; //*p=10;编译时会报错 p=&b; cout<<*p&l...

2020-05-19 14:38:45 317 1

原创 操作系统-------用P,V操作解决生产者和消费者问题(详解!!!)

问题: 系统中有一组生产者进程和一组消费者进程,生产者每次生产一个产品放入缓冲区,消费者每次从缓冲区取出一个产品并使用(注:这里的产品可以理解成某种数据)。条件:生产者、消费者共享一个初始化为空的、大小为n的缓冲区。提示: 做这一题之前一定要熟练的掌握进程的互斥和进程的同步,一定要会!!一定要会!!一定要会! 不会的话可以 点击这里!!!题目分析: 1.首先读题之后就容易知道,咱们现在有一个缓冲区,生产者负责生...

2020-05-12 20:31:49 6964 1

原创 操作系统-----------进程的互斥和进程的同步超详解!!!

一、进程的互斥: 1.互斥的定义 比如一台计算机连着一台打印机,而且现在有多个打印进程,都想要进行打印,但是打印机不可能进行多个打印进程(如果这样做就乱套了),所以这些打印进程之间就存在着一种互斥关系,这时候 打印机可以被看成一种临界资源,在某个时刻内只能有一个进程占用这个临界资源,等这个进程结束,打印机资源才被释放,其他的进程才能使用这个临界资源 2.实现进程互斥的方法 因为打印机属于临界资源,所以可以用互斥信号量mutex表示,而且打印机只有一台,所...

2020-05-12 17:04:13 1715

原创 操作系统-------wait和signal函数原型

这里的信号量机制采取的是记录型信号量(如果采取整型信号量会不满足让权等待)//记录型信号量的定义typedef struct { int value; //剩余资源数 struct procees *L //等待队列 } semaphore; void wait (semaphore mutex) { //wait 原语 mutex.value--; while (mutex.value<0) .

2020-05-12 16:42:45 6766 1

原创 MySQL数据库--------常量详解

#变量/*系统变量: 全局变量 会话变量自定义变量: 用户变量 局部变量*/#一、系统变量/*说明:变量由系统提供,不是用户定义,属于服务器层面使用的语法:1、查看所有的系统变量show global variables;2、查看满足条件的部分系统变量show global|【session】 variables like '%char%';3、查看指定的某个系统变量的值select @@global|【session】.系统变量名;4、为某个系统变量赋值.

2020-05-10 16:29:47 1909 2

原创 MySQL数据库----视图详解

#视图:/*含义:虚拟表,和普通的表一样使用mysql5.1版本出现的新特性,是通过表动态生成的数据比如:舞蹈班和普通班级的对比视图和表的对比 创建关键字 是否占用了物理空间 使用 视图 create view 只保存了sql逻辑 增删改查,一般不做增删改表 create table 保存了数据 增删改查*/#案例:查询姓张的学生名和专业名SELECT stuname,majornameFROM stuinfo sINNER JOIN major m ON s.

2020-05-09 22:13:20 211

原创 MySQL数据库---标识列详解

#标识列/*又称自增长列含义:可以不用手动的插入值,系统提供默认的序列值特点:1、标识列不必须和主键搭配,但一定要和key搭配2、一个表至多只能有一个标识列3、标识列的类型只能输数值型(int、float、double等)4、标识列可以通过SET auto_increment_increment=3设置步长也可以通过手动插入值设置起始值*/#一、创建表时设置标识列DROP TABLE IF EXISTS tab_identity;CREATE TABLE tab_iden

2020-05-09 19:11:07 1561

00000000000职工管理系统.zip

职工管理系统项目源代码,超级详细,里面的代码附带注释,并且可以正常的运行,无Bug,如果下载之后有问题,可以找我解决,保证可以正常的使用。

2020-05-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除