算法
小菜虾
爱的就是技术,不要再怀疑
展开
-
走台阶的问题的心得
先描述一下题:有m(m>0)个台阶,每次只能跨越一个或者两个台阶,一共有多少种走法(如果m=1走法为0)?首先我们先分析一下:看到上面两个表格,你会发现走台阶的的本质是求第m个斐波那契数,数学真是奇妙。求第m个斐波那契数有两种基本的方式:循环或者递归。采用递归的方式:# include <stdio.h>int number;int fact(int m) { if(m<=1)原创 2015-04-17 11:10:14 · 1319 阅读 · 0 评论 -
冒泡排序
冒泡排序的原理:从第一个元素开始,与紧挨的下一个元素比较,如果满足某个条件,交换一下。然后让第二个元素与紧挨的下一个元素比较,直到紧邻的所有元素比较完毕。在这个过程中最值挪到了数组的尾端,第一次冒泡结束。开始第二次冒泡,重复上一次过程,由于上一次冒泡的最值已经挪到尾端,所以尾端的元素就不用参与比较。重复冒泡的过程,直到无法比较。 上图看起来比较直观:观察一下这张图,这是一个长度为5的数组,冒泡了4次原创 2016-11-16 18:54:07 · 576 阅读 · 0 评论 -
选择排序
选择排序的原理:选择第一个元素,依次和后面的比较,满足某个条件,交换。 选择第二个元素,重复上面的的过程。 直到倒数第二个元素和末尾比较完毕。 废话说完上图:观察规律:N(第几次选择) = Length(数组的长度) - 1 M(比较的次数) = Length - N 编程的思路:双重循环实现:外层控制选择第几个元素,内层控制比较的次数。 代码实现:public class Demo06 {原创 2016-11-16 19:01:48 · 203 阅读 · 0 评论 -
折半查找
直接上折半查找的思路图:第一种情况:数组中存在这个数第二种情况:数组中不存在这个数实现代码:public class Demo07 { public static void main(String[] args) { /* * 折半查找 */ int number = 1; //要查找的数字 int[] ar原创 2016-11-16 19:05:47 · 282 阅读 · 0 评论 -
顺序存储结构线性表的各种算法(不定时补充)
顺序存储结构线性表的各种算法一、删除操作1、删除第i个元素开始的k个元素 一、删除操作 虽说顺序存储结构不适合删除操作,但是有时候为了追求时间复杂度和空间复杂度最优,还是颇有难度。 1、删除第i个元素开始的k个元素 在这里插入代码片 ...原创 2019-03-28 13:35:33 · 495 阅读 · 0 评论