标签:
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. 设计黑盒测试的方法:等价类划分,边界值分析,错误推测法。
标签:
原文地址:http://www.cnblogs.com/sthv/p/5793615.html