码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 基础知识复习(四)

时间:2016-08-21 22:46:58      阅读:313      评论:0      收藏:0      [点我收藏+]

标签:

64. 常见的排序算法(序):

之前看的参考资料太烂了,算法说不明白,注释有错误,重新参考其他资料。

当待排序数字较大时,应采用时间复杂度为O(nlogn)的排序算法:快速排序,堆排序或者归并排序。

其中快速排序是目前基于比较的排序算法中被认为效率最高的,当关键字随机分布时,平均时间最短。

具体代码不贴了,理解了思路用的时候现写。

插入排序:直接插入排序,希尔排序

  直接插入排序:将一个纪录插入已经排好序的表中,时间复杂度为O(n^2)。稳定的排序算法。

  希尔排序:先将待排序序列分割成若干子序列分别进行直接插入排序,基本有序时再全体排一次。不稳定的排序算法。

选择排序:简单选择排序,堆排序

  简单选择排序:在要排序的一组数中,选出最小或者最大的一个数与第一位置交换,然后在剩下的数中再找最小或者最大的数与第二个位置交换,直到n-1和n比较为之。

  简单选择排序的改进:二元选择排序,同时记录最大和最小的数据。

  选择排序的继续改进:堆排序heap sort,堆顶元素,大顶堆,小顶堆。即使最坏情况,情况复杂度O(nlogn).

交换排序:冒泡排序,快速排序

  冒泡排序:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。

  冒泡排序的改进:1. 记录是否有交换发生,如果没有交换,则可以提前终止排序。

                         2. 内循环由两个循环构成,分别找最大最小值,调整外循环的范围,外循环用while实现。

  快速排序: 选择一个基准元素,通过一趟排序将元素分割成两部分,左侧都比基准小,右侧都比基准大,基准此时处于正确的位置,然后递归进行。O(nlogn),但若原本基本有序,退化为冒泡排序,是一个不稳定的算法。快排的改进,使之与插入排序结合使用,大于8的字序列用快速排序,然后用插入排序。

归并排序:Merge Sort 分治法,将两个或者两个以上的有序表合并成一个新的有序表。即把待排序的序列分割成若干个子序列,每个子序列是有序的,最后再合并。

各种排序的时间复杂度,空间复杂度和稳定性比较:

技术分享

  基本排序分类:插入排序,选择排序,交换排序,归并陪序,基数排序。

软件工程基本内容部分:

65. 基本的软件开发模型:瀑布模型,原型模型,螺旋模型,增量模型。

66. 软件测试的分类:黑盒测试,白盒测试。

67. 白盒测试的技术:基本路径测试,逻辑覆盖。

68. 逻辑覆盖又可以细分为:语句覆盖,判断覆盖,判定-条件覆盖,条件组合覆盖。

69. 设计黑盒测试的方法:等价类划分,边界值分析,错误推测法。

C++ 基础知识复习(四)

标签:

原文地址:http://www.cnblogs.com/sthv/p/5793615.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!