算法设计之蛮力法

来源:互联网 发布:阴阳师6星土豪酒吞数据 编辑:程序博客网 时间:2024/06/06 10:59
1.蛮力法
(也叫穷举法),是一种直接解决问题的方法,常常直接基于问题的描述和所涉及的概念及定义。
2.蛮力法优点
    逻辑清晰,相对于高效的、巧妙的算法,实现和构思简单。
同时蛮力法也是很多高效算法的基础。可以作为其他高效算法的衡量标准。
对于一些重要的问题,它可以产生一些合理的算法。
可以解决一些小规模的问题。它让你花费较少的代价。

虽然巧妙和高效的算法很少来自于蛮力法,但我们不应该忽略它作为一种重要的算法设计策略的地位。第一,和其

他某些策略不同,我们可以应用蛮力法来解决广阔领域的各种问题。第二,对于一些重要的问题来说(比如:排

序、查找、矩阵乘法和字符串匹配),蛮力法可以产生一些合理的算法,它们多少具备上些实用价值,而且并不限

制实例的规模。第三,如果要解决的问题实例不多,而且蛮力法可以用一种能够接受速度对实例求解,那么,设计

一个更高效算法所花费的代价很可能是不值得的。第四,即使效率通常很低,仍然可以用蛮力法解决一些小规模的

问题实例。最后,一个蛮力算法可以为研究或教学目的的服务。


举例: 排序算法(冒泡排序)

A0,…,AjAj+1,…,An-i-1|An-iAn-1


算法 BubbleSort (A[0..n-1])

//该算法用冒泡排序对数组A[0..n-1]排序

//输入:一个可排序数组A[0..n-1]

//输出:非降序排列的数组A[0..n-1]

for  i←0 to n-2 do

        for  j←0to n-2-i do

             if A[j+1]<A[j]

                   swap  A[j] and  A[j+1]



0 0