算法设计与分析重要方法举例

算法设计与分析重要方法举例

一、蛮力法

1.选择排序:扫描整个列表,找到它的最小元素,然后和第一个元素进行交换,将最小元素放在它在有序表中的最终位置上

C(n)=n(n-1)/2

2.字符串匹配:比较次数为n-m+1,其中n代表文本长度,m代表模式字符串长度

3.冒泡排序:比较表中的相邻元素,如果是逆序,则交换它们的位置上

C(n)=n(n-1)/2

二、减治法

1.插入排序:从右到左扫描有序的子数组,直到遇到第一个小于等于A[n-1]的元素,然后将A[n-1]插在该元素的后面(A[n-2]为一个有序数组)

2.折半查找:比较查找键K和数组中间元素A[m]来完成

C(n)=o(logn)

3.三种形式:
(1)减常数因子;
(2)减一个常量;
(3)减可变规模。

三、分治法

1.合并排序:对于一个需要排序的数组A[0…n-1],合并排序将它一分为二,并对每个子数组递归排序,合并

C(n)=(nlogn)

2.快速排序:按照元素的值对它们进行划分

四、变治法

1.三种变换方式:

(1)将问题变为一个更简单或方便的实例——实例化简(如预排序,高斯消去法);

(2)变换同样的实例为不同的表现——改变表现(AVL树,多路查找树);

(3)变换为另一个问题(这种问题的算法是已知的)的实例——问题化简(堆排序等)。

猜你喜欢

转载自blog.csdn.net/qq_38233258/article/details/86683456