vs 下 boost 环境配置

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。Boost库由Boost社区组织开发、维护。提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。从某种意义上来讲,Boost库成为具有实践意义的准标准库。 大部分boost库功能的使用只需包括相...

模版类实现栈模型的顺序存储

使用模版类实现栈模型的顺序存储需要用到我们之前写好的线性表顺序存储的模版,压栈、出栈、获取栈顶元素、获取栈大小等功能均是使用内部线性表顺序储存的函数实现的。没有什么技术含量,只是将线性表包装了一次。具体代码如下: 1234567891011121314151617181920212223242526272829...

模版类实现线性表链式储存

同上一篇文章,我们一样是把以前使用C语言实现的单向链表用模版实现了一次,进一步让我们对模版和C++的封装特性有了了解。对于链表的操作我们不过多介绍了,如果有还不清楚操作的,请看以前介绍链表的文章。 #pragma once // 链表储存数据的结构体templatestruct LinkLi...

模版类实现线性表的顺序储存

使用模版类来实现线性表的顺序储存将会变的非常简单,我们不必像使用C语言一样,将数据和算法分离时使用非常繁琐的类型转换了,而我们直接使用模版中的typename就可以解决这个问题。具体实现的代码如下,都有详细的标注和测试代码: #pragma once templateclass SeqList{public:S...

常见排序方式的效率对比

我们之前介绍了多种排序算法,它们到底谁效率较高我们是前文介绍了用事前统计法统计了一下,他们的时间复杂度和空间复杂度情况如下表表示。 排序算法 平均时间****复杂度 最坏时间****复杂度 平均空间****复杂度 稳定性 选择排序 O(n2) O(n2) O(1) 不稳定 冒泡排序 O(n2) O(n2) O(...

算法效率的度量

我们已经接触了很多对于数组排序的算法,比如冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序等,算法这么多,我们到底该在实际运用中选择哪一个呢?这就涉及到了取舍的问题,当然我们取舍的重点是算法的运行效率。那算法的运行效率到底如何评价呢?有的人说,你写一个测试程序运行一下(事后统计法),看看具体使用了多少时...

数组堆排序

堆排序也是一种空间换时间的做法,速度相对较快,我们需要生成一个动态的临时数组,以二叉堆的格式将数据插入到数组中,表现形式如下图: 这个二叉堆是一个完全二叉树或一个近似完全的二叉树,要满足以下两点特性: 【二叉堆概念】 父节点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 每个节点的左子树和右子树都是...

数组归并排序

(声明:文章全部图片均来自 传智播客 教师课件)归并排序是一种空间换时间的做法,排序的速度当然会提高很多,归并排序中会产生一个临时数组,这个临时数组用来把不断拆分到最后的有序数据进行合并,最后再把合并后的数据重新赋值给原数组,这样就实现了排序。主要分为以下三个步骤: 1、把原数组无限拆分到最少元素(直至剩余一个...

数组快速排序再解

我们以前是写过数组快速排序的例子的,当时因为时间问题并没有详细记录快速排序的过程是怎么样的。本文在此对数组快速排序做一个详解,希望对学习者有所帮助。 快速排序的思想是抽取一个基准数(一般用数组的第一个元素),抽取的这个元素位置空出,用来交换数据。然后声明两个变量 i 和 j 分别指向数组的头和尾的下标。然后优先...

数组希尔排序

希尔排序是建立在插入排序的基础之上的,只不过是将数据中做插入排序之前做了一次分组,他的分组是根据用户输入的一个数字来决定分多少组的,比如有如下数据: 49 58 65 97 26 13 27 49 55 4 按下图表示的方法进行三次分组,对每次分组出来的数据执行插入排序,最后得出有序的数组,乍一看来这岂不是...