痛定思痛,开启算法之路(二)

本文从欧几里得算法求最大公约数入手,介绍了算法效率分析基础,并探讨了汉诺塔问题的递归解决方法。此外,还详细讲解了蛮力法解决选择排序、冒泡排序等问题的具体步骤。
    曾经有一个真挚的算法摆在我的面前、我没有珍惜,直到有一天一个非常重要的考试考到了关于它的一个大题,
    除了心痛之后悔莫及,那就是马上把它彻底搞透(这是我最真实的案例,可能这次考试影响不了我的毅力和决心,
    但我为他却付出了足够、足够的心血!!)

第一章 绪论

1.欧几里得求最大公约数:
(核心思想:辗转相除)
注意顺序选择:m>n;逐步减小,直到0为止;

这里写图片描述

为什么辗转相除可以得到最大公约数:
首先给定两个数a,b(a>b),则根据除法运算,a/b=q.r; q是商,r是余数.也可以表示为a=bq+r.
下面给出一个定理:
若a=bq+r,则(a,b)=(b,r),即a,b的最大公约数等于b,r的最大公约数.
证明:
设c是a和b的任意一个公约数,则c能同时整除a和b,即a=cx,b=cy,(x,y是整数)
将它们代入“a=bq+r”中:
cx=cyq+r
得到r=c(x-yq),说明c也能整除r,即c也是b和r的公约数.
于是a和b的公约数就是b和r的公约数,那么a和b最大公约数就是b和r的最大公约数,(a,b)=(b,r).
定理得证.

这里写图片描述

第一章如其名字,主要是一些基本概念理论的介绍,基本大学时期的数据结构已经涵盖非常清晰明了了,下面继续往下走;

第二章 算法效率分析基础

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

例四:
    汉诺塔若果往细了去一步步执行确实非常麻烦,但是倒过来想利用递归用程序实现却是十分的简单明了;一次只能挪动一个且大的不能压住小的,一共A、B、C三个柱子,无非就是先将前n-1个小的由A借助C移动到B,然后将第n个最大的从A直接移动到C;此时便完成一次递归,剩下的B上的n-1个借助A由B移动到C原理与上相同;
    有些问题细思极恐,比如此问题,如果让你一步步去模拟实现,规模小还可以,一旦稍微变大其代价都是十分恐怖的,所以说规律很重要;从大的方向下手,简化问题,利用递归不得不说是一种伟大的算法。

第三章 蛮力法

这里写图片描述
这里写图片描述

实例:选择排序、冒泡排序;顺序查找、蛮力匹配;最近对问题(n个点集合中,最近两点的距离)、

凸包问题:
这里写图片描述

以两点为线,若其余点均在此线的一边,则此线构成此凸包的一个边界;
这里写图片描述

旅行商问题(经n个城市回到原点)、背包问题(装不同质量不同价值物品)、分配问题(n个人分n个任务);

这一章的问题解法均基于穷举法,原理实现非常的明了就不一一具体代码实现了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值