-
当函数需要返回一个vector时,采用什么方式最好? 将其作为函数的一个参数比较好,避免数据的大量拷贝。
-
const修饰的函数内部只能调用const修饰的函数? 是的,为了防止调用的那个函数修改数据成员。
-
时间复杂度 & 空间复杂度?
-
冒泡排序与选择排序的区别?
- 冒泡排序中,每一趟排序是相邻两个元素之间进行比较、交换位置;
- 选择排序中,每一趟排序中,是从选择的那个数开始,依次与后面的所有数字进行比较,找到最小的那一个;
-
如何理解排序算法的稳定性? 通俗解释: 我们知道对于原数列中的两个相等元素,他们有一个前后位置关系。稳定性排序算法能保证排序后的数列中,这个前后位置关系仍然能够保持。
比如,原数列中,如果Ai = Aj,其中Ai位于Aj的前面。那么经过稳定性算法排序后,Ai仍然位于Aj的前面。
虽然相等的两个数字的前后位置,对于排序后的数据没有本质性的区别,但是稳定性算法仍然有一定的优势:
- 节约排序时间。稳定性算法会减少一次数据交换的时间。
- --
- 选择排序算法为什么不稳定? 这个问题通过一个例子来说明比较只管: 对于一个序列 : 5 8 5 2 9 选择排序在第一遍排序中,会选择第1个元素5会和元素2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。