4 凌桓丶

尚未进行身份认证

暂无相关简介

等级
TA的排名 12w+

Linux 进程(一) 进程概念和进程状态(僵尸进程、孤儿进程、守护进程)

进程的概念进程状态 进程的概念程序:一系列有序的指令集合(就是我们写的代码)进程:进程就是程序的一次执行,是系统进行资源分配和调度的独立单位。程序是一个没有生命的实体,只有操作系统执行它时,它才能成为一个活动的实体,也就是进程。同时,操作系统通过进程控制块(PCB),来对程序进行调度使用操作系统如何控制和调度程序按照冯诺依曼体系结构,所有的数据想要被CPU进行处理,第一步就...

2020-04-01 18:00:51

一篇文章快速搞懂计数排序

之前的几篇讲解了所有常用的比较排序,这次就来讲一讲非比较排序的计数排序。计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。和其他排序不一样,计数排序并不是通过比较元素的大小来实现的,而是通过统计所有相同元素出现的次数来进行排序,思路与其他的排序大有区别。例如:int arr[] = {2, 5, 3, 0, 2, 3, 0, 3}我们利用哈希表的直接定址法, 如果某个元素出现过一次...

2020-03-30 22:11:36

数据结构 排序(五) 归并排序

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。归并排序的核心思路就是不断将数据拆分成左右两部分子序列,直到所有子序列有序,然后将有序的子序列不断合并成有序的序列, 最后整体有序它和快速排序一样都呈树状结构...

2020-03-28 21:36:02

快速排序详解(Hoare法, 挖坑法,双指针法,非递归实现, 优化)

前两章讲解了排序中的选择排序和插入排序,这次就来讲一讲交换排序中的快速排序。快速排序时间复杂度:平均 O(nlogn) 最坏 O(n2)快速排序,顾名思义,它的排序的效率是非常高的,在数据十分杂乱的时候他的效率甚至能远远超过希尔排序和堆排序。而这个排序的核心思想就是以交换为核心的划分还是以前的方法,首先讲解单趟的思路。快速排序单趟的思路,就是先选定某个枢轴,以这个枢轴为基准,展开划分,划分...

2020-03-26 08:05:29

LInux 环境变量

环境变量简介环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数。常见的环境变量PATH:指定命令的搜索路径HOME:用户的主工作目录,即用户登陆时的默认路径SHELL:当前shell,通常是/bin/bash查看环境变量的方法echo功能:查看指定环境变量的内容语法:echo [变量名]env功能:显示所有环境变量语法:env并且不同用户的HOME...

2020-03-23 17:38:38

数据结构 排序(三) 直接插入排序、希尔排序

前几章讲了选择排序中的直直接选择排序、双向选择排序、堆排序,这次来讲讲利用‘插入’为核心来实现的插入排序算法。插入排序把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 。其实在我们的生活中,插入排序是随处可见的例如打扑克牌时我们将发来的卡牌一张一张的插入进排序好的手牌中。...

2020-03-21 18:14:55

数据结构 排序(二) 直接选择排序、双向选择排序

前几章讲了交换排序中较为复杂切高效的堆排序,这次就来讲讲选择排序中最简单的直接选择排序及其改进双向选择排序。选择排序:顾名思义,就是主要通过选择来完成的排序,每一趟从待排数据中选择一个最大或者最小的数据,将其放到序列的起始,直到全部数据排完。直接选择排序的思路是这样的:例如我们要排升序,我们就假设第一个数据为最小值,将它的下标存入变量min中,如果后面存在比第一个数据还要小的数据,则将那个数...

2020-03-19 20:36:25

数据结构 树(四)二叉树链式结构实现

前几章实现了二叉树的顺序结构和二叉树的几种遍历,这次就来实现二叉树的链式结构数据结构typedef char BTDataType;typedef struct BTNode{ BTDataType data; struct BTNode* left; struct BTNode* right;}BTNode;实现的接口// 通过前序遍历的数组构建二叉树BTNode* B...

2020-03-17 16:08:09

数据结构 树(三)二叉树的遍历 : 前序遍历、中序遍历、后序遍历、层序遍历

二叉树的遍历是指从根节点出发,按照某种次序依次访问二叉树的所有节点,使得每个节点被访问且只访问一次。而一般有四种遍历方法:前序、中序、后序、层序,下面就分别讲一下四个遍历的思路以及代码实现例如我们以下面这个字符串用先序遍历来建树char str[] = "ABD##E##CF##G##";因为这里主要讲解的是四种遍历,所以建树以及其他的操作会放到下节构成的树如下:前序遍历前序...

2020-03-16 02:44:43

Linux项目自动化构建工具 make/Makefile

在我们日常写代码中,一个工程的源文件不计其数, 按照类型、功能、模块等分别放在若干个目录中,这时候我们就可以利用makefile来指定哪些文件先编译,哪些后编译,以及更复杂的操作。我们只需要在makefile里指定所有的操作,在用make这个操作,即可让整个工程自动编译。makefile的内容就是我们对于这个文件之间相互关系的描述,而make就是解释这些描述的工具,两者搭配使用就可以完成项目的自...

2020-03-11 18:11:54

Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位

Linux下的基本指令 目录: lspwdcdtouchmkdirrmdir rm 权限的概念Linux下用户有两种:超级用户(root)、普通用户。超级用户:具有最高权限,可以在系统中做任何事情,不受约束。普通用户:操作受到限制,只能做有限的事情。我们可以使用这样su命令,来切换用户的权限su语法: su [用户名]功能: 切换用户区分当前用户权限的方法...

2020-03-09 18:37:39

Linux下的基本指令

Linux下的基本指令 目录: lspwdcdtouchmkdirrmdir rmmancp mvcat morelesshead tailcal findgrep zip/unziptarshutdown 常用热键 ls语法:ls [选项][目录或文件]功能:目标为目录时列出该目录下的所有子目录与文件。目标为文件时则列出文件名和其他信息。...

2020-03-06 17:58:31

数据结构 排序(一) 堆排序

堆排序在上一章节里我们完成了堆的实现和基本操作:https://blog.csdn.net/qq_35423154/article/details/104598702这里就顺带讲一讲堆排序堆排序是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。通过堆来进行数据选择时间复杂度: O (N*logN)空间复杂度: O (1)稳定性:不稳定下面来讲一下具体思路如...

2020-03-04 16:38:13

数据结构 树(二)二叉树的顺序结构 : 堆的概念及结构、堆的实现、向上调整算法、向下调整算法

二叉树的顺序结构堆的概念及结构堆的实现 二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储完全二叉树的顺序存储非完全二叉树的顺序存储可以看到,这样是一种对空间的浪费,所以普通的二叉树不适合用数组来存储 堆的概念及结构如果有一个关键码的集合K...

2020-03-02 10:07:33

数据结构 树(一)树和二叉树的概念与性质

树的概念二叉树的概念树的概念和结构树是一种非线性的数据结构,它是由n个有限结点组成一个具有层次关系的集合,把它叫做树是因为它看起来像一棵倒挂的树,如图所示有一个特殊的结点,称为根节点,根节点没有前驱结点除根节点外,其余结点被分成M个互不相交的集合T1、T2、、、、、Tm, 其中每一个集合Ti又是一棵结构与树类似的子树。每棵子树的根节点有且只有一个前驱,可以有0个或多个后驱结点...

2020-02-29 21:40:45

逆波兰表达式求值

逆波兰表达式又叫做后缀表达式。逆波兰表示法是波兰逻辑学家J・卢卡西维兹(J・ Lukasewicz)于1929年首先提出的一种表达式的表示方法 [1] 。后来,人们就把用这种表示法写出的表达式称作“逆波兰表达式”。逆波兰表达式把运算量写在前面,把算符写在后面。逆波兰表达式就是后缀表达式,将运算量写在前面,运算符写在后面,如:2, 1, +, 3, * 等价于 ((2 + 1) * 3...

2020-02-26 18:31:28

数据结构 栈与队列(三)循环队列

循环队列实际中我们还会用到一种队列叫做循环队列,这种队列把存储空间前后连接起来,形成像环一样的结构,解决了内存空间浪费的问题这里我们用顺序结构来实现,因为为了防止溢出的情况,这里我们需要多开一个数据的空间用作缓冲,这部分不用于存数据,用于防止溢出,当数组访问到这一部分时就将他归零,实现循环的结构。每次入数据通过队尾指针入,出数据通过队首指针出,和队列的操作方法差不多,每一步骤的具体实现思路...

2020-02-24 20:53:23

用队列实现栈(C语言实现)

上一章实现了用栈来实现队列,这一次我们试试用队列来实现栈。因为栈的特性是先进后出,队列是先进先出。所以我们可以想到用两个队列,一个空队列,一个放数据,当我们入队的时候将数据直接放入非空队列,出队的时候将非空队列中除队尾外的所有元素放到空队列中,再出队尾即可。如下图如数据1,2,3,4全部入队模拟出栈先将除队尾全部放到原来的空队列中再进行出队,即可实现栈的特性先进后出下面开...

2020-02-21 17:01:54

用栈实现队列(C语言实现)

之前的几章我讲解了栈和队列的基本特性和一些基本的操作方法,那么如何能利用栈来实现队列呢?下面我来讲解下具体思路,栈的特性先进后出,队列是先进先出,如果要模拟队列的这个特性,我们就必须用到两个栈。一个栈用来入队,一个栈用来出队。什么意思呢?就是我们把数据存放到第一个栈中,再把里面的数据全部移动到第二个栈后在出栈,就能够模拟出队列的先进先出的特性假设我们操作1 ,2,3,4这四个数据如果是队列...

2020-02-19 22:10:00

数据结构 栈与队列(二)队列的基本操作

队列队列只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出的特性,就如同我们排队一样,先排的就先出去。而进行插入的一端叫做队尾,进行删除的一端叫做队头队列可以用顺序表和链表的结构来实现,在这里我们就用链表来实现。如入队1, 2, 3,4先入一个4在出一个1队列的当我们再全部出队列时,就从1,2,3,4还是1, 2, 3,4这就是栈的先进后...

2020-02-17 16:51:01

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    参与《原力计划【第二季】— 学习力挑战》获得推荐的原创文章的博主