自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 【数据结构】排序算法之计数排序与基数排序

一、计数排序 很好理解,就是对应每个数我们统计每个数字出现的次数,然后用一个直接定址的哈希表来存放数据,在通过遍历这个哈希表,进而就可以排好序了 如下所示: 代码实现如下所示:void CountSort(int *array, int size){ assert(array || size < 0); int minData = array[0]; ...

2018-04-26 23:03:21 451 1

原创 【数据结构】排序算法之归并排序

基本思想:将待排序的元素序列分成两个等长的子序列,再将子序列划分子序列,直到子序列中只有一个元素就不用在对子序列继续进行划分,将划分的每个区块,进行排序,然后再将其归并到一个序列中,直到将所有的子序列归并完成之后,则这个序列就完成了排序。 1、基本思想如下所示: 经过上面的划分,从而可以看出经过划分与归并,使得元素就有序。 但是要使得两个区间的元素能归并到一个区间中,如果只是将一个元素搬...

2018-04-25 22:42:34 213

原创 【数据结构】之交换排序

一、冒泡排序 第1趟:依次比较相邻两个数据元素(i = 0,1,2,…, n-2),若array[i]>array[i+1],则交换两个元素,否则不交换,这样数值最大的数据元素将被防止在a[n-1]中; 第2趟:数据个数减1,即数据元素个数为n-1,操作方式和1类似,排完之后数据序列中的次大元素保存在array[n-2]中; 当n-1趟结束时,排序结束。 实现代码如下所示:...

2018-04-23 19:39:59 786

原创 算法分析神奇之时间复杂度、空间复杂度、稳定性

算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度)。

2018-04-18 22:00:17 555

原创 【数据结构】排序算法之选择排序

一、选择排序——最差的排序算法 在选择排序中,假定我们需要升序,因此在每次排序中,需要找到最大的元素,将其放在最后,在每一次的循环中,都是将最大的元素放在最后,因此对于数据较多的数组,循环的次数将与数组中元素的个数一致,因此,在对于这种数组进行排序时,将十分的浪费时间。 有关选择排序的思路,如下所示: (一)方式一,默认数组中最后一个元素最大,如下图所示: 代码如下所示:void ...

2018-04-17 22:29:30 613

原创 【数据结构】排序算法之插入排序

一、排序概念 1、概念 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。 2、排序分类 3、各种算法的性...

2018-04-16 21:55:14 1100

原创 【Linux】多线程初识

一、线程概念 1、线程引入 假设有一个mp3程序,他的主要任务是从内存中读取文件,对文件进行解压,最后再将这个文件播放出来,因此他需要三个步骤,才能完成这一个任务,如果将其放在一个进程中,有可能造成在读以及解压过程比较慢,当这边的文件已经播放完成,但是那边还没有读取或者解压完成,将会造成CPU的长时间等待,或者 有可能造成文件播放杂乱,因此有的人就提出以下两种方法: 方法一:分别由三个进程,控

2018-04-13 22:06:09 211

原创 【数据结构】并查集

一、基本概念 并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。常常在使用中以森林来表示。集就是让每个元素构成一个单元素的集合,也就是按一定顺序将属于同一组的元素所在的集合合并。在一些有N个元素的集合应用问题中,通常是在开始时让每个元素构成一个单元素的集合,然后按一定顺序将属于同一组的元素所在的集合合并,其间要反复查找一个元素在哪个集合中。 1、概

2018-04-11 22:11:31 332

原创 Linux信号集

在上一篇文章中,我们已经介绍了Linux中有关进程信号的一些基础知识,现在,我们再来看一下在一个进程中,如何阻塞信号,以及如何在内核中捕捉信号。 Linux信号概念https://blog.csdn.net/aaronlanni/article/details/79794665 一、阻塞信号 1、信号与其相关概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间

2018-04-10 20:38:50 3419 2

原创 Linux进程信号

一、信号的概念 要了解进程信号,首先要对进程的概念做一个简单的了解,要知道这一部分,请参考上一篇文章,进程概念。https://blog.csdn.net/aaronlanni/article/details/79774496 1、信号的基本概念 信号(signal)是linux进程通讯中的一种方式。 信号从软件层次上看是对中断机制的一种模拟。一个进程收到信号时的处理方式与CPU收到中断请...

2018-04-09 20:06:57 777

原创 进程控制

一、进程创建 在进程概念那一章节,我们已经了解到了基本的进程创建的方式,现在我们在对其做一个回顾与总结。 1、fork函数创建子进程 (1)fork的概念 在一个已经存在的进程中创建一个新进程,原进程为父进程,新进程为子进程 。其中,子进程完全以父进程为模板进行创建,将父进程的数据结构拷贝给子进程,对于子进程的数据进行写时拷贝。 现在,我们再来认识一下fork#include &lt...

2018-04-03 23:20:19 1065 1

原创 VIM的使用以及Makefile的编写

一、有关vi与vim 1、概念 - vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,我们将会在Linux的世界里畅行无阻。 - vim 具有程序编辑的能力,可以以字体颜色辨别语法的正...

2018-04-02 18:10:31 8923 2

原创 进程概念

一、计算机结构 在要了解进程之前,需要先对计算的组成有一个大概的了解,这对于我们理解进程,有着很大的帮助。 在现在的计算机中,大多采用冯诺伊曼体系结构,在冯诺伊曼中,主要有以下几个部件。 这里需要注意一下几点: - 这⾥里的存储器指的是内存 - 不考虑缓存情况,这⾥里的CPU能且只能对内存进⾏行读写,不能访问外设(输⼊入或输出设备) - 外设(输⼊入或输出设备)要输⼊入或者输...

2018-04-01 22:17:21 1487

空空如也

空空如也

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

TA关注的人

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