算法设计与分析学习-蛮力法

本文介绍了算法设计中的蛮力法,虽然效率较低,但在某些场景下仍具实用性。内容涵盖选择排序与冒泡排序的稳定性分析、顺序查找与字符串匹配、最近点对和凸包问题的蛮力解法。此外,还讨论了旅行商问题、背包问题和分配问题的枚举搜索。最后指出,对于小规模问题,蛮力法是一种可行的解决方案,但通常会被更高效的技术替代。
摘要由CSDN通过智能技术生成

参考 :  算法设计与分析   第三章  蛮力法
接下来的每章中,我们专注于一种特定的算法设计策略。

蛮力法是一种最简单和直接的解决问题的办法,往往是低效的,但我们不应该忽略它的地位,

1)它可以解决广阔领域的各种问题

2)在规模允许时,多少可以产生一些实用的算法

3)往往可以以蛮力法为准绳,来衡量高效的算法,或者找不到其他算法时,先设计蛮力算法,再做改进

好了,很简单,直接切入正题。



3.1   选择排序和冒泡排序

 虽然很简单,也写了很多次了,复习一下,提请想一想:

1) 它们是稳定的排序方法吗吗?不稳定,稳定

2)改进:如果对列表比较一遍后发现没有交换元素的位置,那么此时列表已经有序,可以退出了



3.2  顺序查找和蛮力字符串匹配

顺序查找不用说吧

蛮力字符串匹配更不用说吧,kmp都写过了



3.3  最近点对和凸包问题的蛮力算法


由于在第四章中我们将用分治算法来解最近点对问题和凸包问题,这里主要明确一些概念吧,知道什么是最近点对,凸包问题。

最近点对就没有什么说的了,说说凸包:





蛮力解凸包问题就是一条条的线段判断,若其他所有顶点都在这条线段的同一侧,则这条线段的2个端点是凸包的顶点,怎么判断是一个解析几何的数学问题,不说了。

凸包就不写了,蛮力的,没有什么技术含量,就写了个最近点对。在分治算法中再来详细分析怎样设计更加精妙的方法。蛮力法的最近点对代码:


复制代码
   
   
   
package Section3;


/* 第三章蛮力法 3.3 最近点对(蛮力) */

public class NearestPoint {
/**
*
@param args
*/
public static
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值