穷举思想
穷举法就是针对问题可能出现的结果,对其逐个进行测验并得出是否为符合要求的结果,穷举法也是许多高级算法中的某个部分。有点像高中数学里面的对问题进行分类讨论的过程中,寻找所有的情况的异曲同工之处。
两部分组成
- 系统化地枚举问题各种可能的候选解
- 检查验证每一个候选解是否满足问题的求解要求
穷举的抽象算法伪代码
问题描述
问题思路
- 在 1~n-1 当中随机选择一个数 k1,将其与第 n 个数互换;
- 在 1~n-2 当中随机选择一个属 k2,将其与第 n-1 个数互换;
- 在第 i 轮之后,1~n-(i-1)当中选择一个数 ki,将其与第 n-(i-1)个数互换;
代码思路
- 在区间之间随机数的生成
- 交换函数
- 泛型:支持各种类型数据的“洗牌”