算法
算法
菜鸟小杰
只要学不死,就往死里学!!!
展开
-
时间复杂度和空间复杂度
时间复杂度和空间复杂度时间复杂度求解算法的时间复杂度的具体步骤是:找出算法中的基本语句;执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。计算基本语句的执行次数的数量级;只需计算基本语句执行次数的数量级。这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。下面我来举一个简单例子: public static void main(String[] args) { int n = 10, a = 0;原创 2021-11-06 19:07:08 · 192 阅读 · 0 评论 -
二分查找算法
二分查找算法前提:有序数组首先确定整个查找区间的中间位置 mid = strat+(end-strat)/2用待查关键字key值与中间位置的关键字值进行比较;若相等,则查找成功若大于,则在后(右)半个区域继续进行折半查找若小于,则在前(左)半个区域继续进行折半查找重复上述步骤。方式一:非递归 public static int search(int key, int[] arr) { int start = 0; int end = arr.len原创 2021-11-02 23:55:14 · 191 阅读 · 0 评论 -
分治 算法
分治算法基本思想把复杂问题分解成若干互相独立容易求解的子问题分治算法经典例子——-汉诺塔汉诺塔问题:如图有A(原柱)、B(借力柱)、C(目标柱)三个柱子,要求把A(原柱)上的圆盘从下面开始按大小顺序重新摆放到C(目标柱)上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。当A(原柱)上有两个盘子时,我们先把上面的小圆盘移动到B(借力柱),再把大圆盘移动到C(目标柱),最后把B(借力柱)上的圆盘移动到C(目标柱)就完成了。当A的圆盘上越多时,问题就越难解决,我们可以借助分治法来原创 2021-11-03 00:27:47 · 238 阅读 · 0 评论