算法中重要的问题类型

来源:互联网 发布:倩女手游 mac 编辑:程序博客网 时间:2024/05/02 06:10

计算中能遇到无数种问题,但只有少数领域的问题引起了特殊关注。下面简单介绍这些重要的问题类型

1.排序

排序问题要求我们按升序(降序)重新排列给定列表中的数据项。在对记录排序时需要选取一段信息作为排序的依据,这段特别选定的信息称为
排序算法中有两个特性:稳定(保留了相等元素在输入中的相对位置),In-place(不占用额外内存或占用常数的内存)。
稳定的排序算法:    冒泡排序、插入排序、归并排序、基数排序
非稳定的排序算法:

选择排序、快速排序、希尔排序、堆排序

In-place sort :插入排序、选择排序、冒泡排序、堆排序、快速排序
Out-place sort:归并排序、计数排序、基数排序、桶排序

2.查找

查找问题是在给定的集合(或者是允许多个元素具有相同值的多重集)中寻找一个给定的值。

查找问题一般需要结合另外两种操作一起考虑:数据集合中添加和删除元素的操作。这这种情况下,必须仔细选择数据结构和算法,从各种操作的需求之间找到一个平衡。

五中常用的查找方法:顺序查找、二分查找(折半查找)、二叉排序树查找、哈希表法(散列表)、分块查找。

3.字符串处理

字符串是字母表中的符号所构成的序列。在文本中查找一个给定的词称为字符串匹配问题
字符串匹配问题的三种算法:蛮力字符串匹配、Horspool算法、Boyer-Moore算法。

4.图问题

基本的图算法包括图的遍历算法(深度优先算法、广度优先算法)、最短路线算法(Dijkstra算法)以及有向图的拓扑排序。
图问题中的经典问题:旅行商问题和图填色问题

5.组合问题

组合问题是计算领域中最难的问题。

6.几何问题

几何算法处理类似于点、线、多面体这样的几何对象。
两个经典的计算几何问题:最近对问题和凸包问题。

7.数值问题

数值问题涉及具有连续性的数学问题:如解方程和方程组、计算定积分、求函数的值等



0 0