希赛考试网
首页 > 软考 > 软件设计师

常见算法分类

希赛网 2024-05-20 16:27:31

算法是一种解决问题的思路和方法,它是计算机科学中的重要分支。算法分类是算法学习中的基础,能够更好的了解算法的特点和应用范围。本文将从多个角度分析常见算法分类。

一.按照时间复杂度分类

时间复杂度指执行算法所需的计算时间。TC是关于问题规模n的函数,记做:T(n)=O(f(n)),读作算法的渐进时间复杂度为f(n)。按照时间复杂度分类,可以将算法分为以下几类:

1.常数阶O(1)。此类算法的运行时间是固定的,不随问题规模n的增大而增加,如数组索引、队列和栈等算法时间复杂度均为O(1)。

2.对数阶O(logn)。此类算法时间复杂度随问题规模n的增大而增加,但是增长率趋缓,如二分查找、快速排序、归并排序等算法的时间复杂度均为O(logn)。

3.线性阶O(n)。此类算法的时间复杂度随问题规模n的增大而增加,增长率和n成正比,如简单查找、选择排序和冒泡排序等算法的时间复杂度均为O(n)。

4.线性对数阶O(nlogn)。此类算法时间复杂度随问题规模n的增大而增加,增长率略高于O(n),如归并排序、快速排序等算法的时间复杂度均为O(nlogn)。

5.平方阶O(n^2)。此类算法时间复杂度随问题规模n的增大而增加,增长率远高于O(n),如插入排序和冒泡排序等。

6.立方阶O(n^3)。此类算法的时间复杂度随问题规模n的增大而增加,增长率远高于O(n^2),应尽量避免使用该类算法。

7.指数阶O(2^n)。此类算法的时间复杂度随问题规模n的增大而急剧增加,目前尚未出现实际应用的算法。

8.阶乘阶O(n!)。此类算法的时间复杂度随问题规模n的增大而急剧增加,应尽量避免使用该类算法。

二.按照空间复杂度分类

空间复杂度指算法在执行过程中所需的内存空间,常用的指标是算法所需的额外存储空间。按照空间复杂度分类,可以将算法分为以下几类:

1.原地排序。原地排序算法不需要额外的存储空间,如插入排序、冒泡排序、选择排序等算法均为原地排序算法。

2.借助额外的存储空间。借助额外的存储空间实现的算法,包括归并排序、快速排序等。

三.按照算法策略分类

1.贪心算法。贪心算法是指在每一步选择中都采取当前状态下最好或最优的选择,以期达到全局最优解。贪心算法比较高效,但是不能保证每次都能得到最优解,比如霍夫曼编码。

2.分治算法。分治算法是指将复杂的问题分成两个或多个相同或相似的子问题,然后递归解决这些子问题,最后将子问题的解合并成原问题的解。分治算法常用于排序算法,如归并排序和快速排序。

3.回溯算法。回溯算法是一种搜索算法,它通过不断地搜索解空间中的状态,来寻找问题的解。回溯算法常用于最优解问题。

4.动态规划算法。动态规划算法是用来求解最优化问题的一种算法思想。它的基本思想是通过各个子问题的最优解,推导出原问题的最优解。动态规划算法常用于背包问题和最短路径问题等。

五.

扫码咨询 领取资料


软考.png


软件设计师 资料下载
备考资料包大放送!涵盖报考指南、考情深度解析、知识点全面梳理、思维导图等,免费领取,助你备考无忧!
立即下载
软件设计师 历年真题
汇聚经典真题,展现考试脉络。精准覆盖考点,助您深入备考。细致解析,助您查漏补缺。
立即做题

软考资格查询系统

扫一扫,自助查询报考条件