37 }; int in, out; for (out = 1; out < data.length; out++) { int temp = data[out]; in = out; while (in > 0 &;&; data[in - 1] >= temp) { data[in] = data[in - 1]; --in; } data[in] = temp; } 选择排序: int[] data = new int[] { 12, 8, 3, 59, 132, 1236, 3400, 8, 352, 37 }; int minValue; int indexMin; int temp;
5
for (int i = 0; i < data.length; i++) { int lowIndex = i; for (int j = data.length - 1; j > i; j--) { if (data[j] < data[lowIndex]) { lowIndex = j; } } temp = data[i]; data[i] = data[lowIndex]; data[lowIndex] = temp; for (int k = 0; k < data.length; k++) System.out.print(data[k] + " "); System.out.println(); }
各种排序的优点和使用场合?
冒泡排序: 排序方法:相邻两元素进行比较,如有需要则进行交换, 每完成一次循环就将最大元素 排在最后(如从小到大排序) 下一次循环是将其他的数进行类似操作。 , 优点 – 若数据已有部分排好序,则使用冒泡排序法可以很快的完成排序。 缺点 – 会造成反复扫描数据,比较相邻的两个数据,速度不快也没有效率。 插入排序: 排序方法:每一趟从待排序的数据元素中选出最小(或最大)的一个元素, 顺序放在 已排好序的数列的最后, 直到全部待排序的数据元素排完。 优点: – 最简单的排序 缺点 – 比其他排序消耗时间多 选择排序: 排序方法:将一个记录插入到已排好序的有序表(有可能是空表)中, 从而得到一个新 的记录数增 1 的有序表 优点 – 利用一个一个的元素的插入比较,将元素放入适当的位置,也属于简单排序 缺点 – 但是每次都与之前数据相比较,故耗费时间
6
递归算法的使用和使用场合
递归算法的使用 递归过程一般通过函数或子过程来实现。 递归算法:在函数或子过程的内部,直接或者间接地调用自己的算法。 递归算法的实质:是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程) 来表示
问题的解。 递归算法解决问题的特点: (1) 递归就是在过程或函数里调用自身。 (2) 在使用递增归策略时,必须有一个明确的递归结束条件,称为
递归出口。 (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算 法设计程序。 (4) 在递归调用的过程当中
系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容 易造成栈溢出等。所以一般不提倡用递归算法设计程序。 案例分析: ? 思考一下,13×4 的答案是如何算出的呢,13×4 是不是 13 连加四次呢?那我们如何得到 13 还要连加几次呢?何时停止呢? ? 分析:递归的实例 步骤 1:了解是否为适合用递归解题 步骤 2:决定递归的结束条件 步骤 3:决定递归执行部分 public static int mul(int a, int b) { int result; if(b == 1) { //结束条件 result = a; } else { //执行部分 result = a + mul(a, b - 1); } return result; }
模式:
设计模式的分类?每种类型的作用?
设计模式可以分为三大类,分别是创建型设计模式、行为型
设计模式以及结构型设计模式。 创建型的设计模式:
7
单例模式(Singleton) 构建模式(Builder) 原型模式(Prototype) 抽象工厂模式(Abstract Factory) 工厂方法模式(Factory Method) 行为设计模式: 策略模式(Strategy) 状态模式(State) 责任链模式(Chain of Responsibility) 解释器模式(Interpreter) 命令模式(Command) 观察者模式(Observer) 备忘录模式(Memento) 迭代器模式(Iterator) 模板方法模式(Template Method) 访问者模式(Visitor) 中介者模式(Mediator) 结构型设计模式: 装饰者模式(Decorator) 代理模式(Proxy) 组合模式(Composite) 桥连接模式(Bridge) 适配器模式(Adapter) 蝇量模式(Flyweight) 外观模式(Facade) =================================================================== 各种模式的表述: 单例模式(Singleton):确保有且只有一个对象被创建。