“程序=数据结构+算法” 这个公式很多开发者都知道。 算法是对特定问题的求解步骤的一种精确描述方法,目前被广泛认可的算法专业定义是:算法是模型分析的一组可行的、确定的和 有穷的规则。 通俗的说,算法可以理解为一个完整的解题步骤,由一些基本运算和规定的运算 顺序构成。 在有限的时间内通过解题步骤解决特定的问题来获得有效的输出结果。 是不是看着懵懵的?别急,技术需要慢慢消化 举个例子吧,就用最经典的例子就是统筹安排! 假如你有3件事(A B C)要做 A 需要5分钟 B 需要5分钟但是需要等会15分钟 (如烧水过程) C 需要10分钟 你会怎么安排呢,欢迎留言,今天就到此为止(开玩笑啦) 我们来看两张图你就明白了 方法一 方法二 上述例子中我们看出来,算法分两种:算法效率低和算法效率高。算法也是有好坏区分的。好的算法是提工作的效率,算法的基本任务是针对一个具体的问题找到一个高效率的处理方法才是我们想要的。 算法的特点:有穷性、确切性、输入、输出和可行性 有穷性:算法指令或步骤执行次数有限,执行时间也许有限 确切性:算法的每一个指令或步骤必须有明确的定义或描述 输入:一个算法应该有相应的输入条件 输出:一个算法应该有相应的输出结果 可行性:算法的执行步骤必须是可行的,且可以在有限的时间内完成。 流程图 流程图是一种图形表示算法的流程方法。 一般采用如下三种结构。 顺序结构:顺序结构是最简单的流程结构,一个接着一个进行处理。 分支结构:分支结构常用于根据某个条件来决定算法的走向。如:先判断p,p成立执行B 不成立执行A。分支结构又是也成为条件结构 循环结构:循环结构常用于反复执行,可分为当型循环结构和直到型循环结构。 当值循环结构先对条件进行判断,在执行,一般用while语句实现 直到型循环结构先执行,然后在对条件进行判断,一般用until、do...while语句执行。 Ps:构成死循环的结构没有如何意义。 算法性能评价。 时间复杂度:是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。 空间复杂度:时间复杂度是同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。 下面代码演示 在一个数组中查找数据是很常用的操作。 首先输入待查找的数据,并生成一个随机的数据数组,然后从头到尾对数据进行逐个比较,当数据相等时找到数据,并输出结果。 输入一个没有的值 输入一个有的值。 代码区域,便于复制 import java.util.Random; import java.util.Scanner; public class text { static int n =20; public static void main(String[] args) { int [] arr=new int[n]; //x用户保存键盘录入的值 int x,N,i; //f 保存找到的数据 int f=-1; Random ran = new Random(); for(i=0;i<n;i++){ arr[i] =ran.nextInt(100); //产生数组 随机生成种子 } System.err.println('随机生成的数据序列:\n'); for(i=0;i<n;i++){ System.out.println(arr[i]+' '); } System.out.println('\n\n'); System.out.println('输入你要查找的整数:'); //键盘录入 Scanner input = new Scanner(System.in); x=input.nextInt();//输入查找的数 for(i=0;i<n;i++){ //顺序查找 if(x==arr[i]){ f=i; //=找到数据 并赋值 break; } } if(f<0){ System.out.println('没有找到数据:'+x); }else{ System.out.println('数据:'+x+'位于数组的第'+(f+1)+'个元素处。\n'); } } } |
|