数据结构和算法
冒泡:每次比较都可找出最大或最小的,有序的在最右边
选择排序:有序的在最左边
插入排序:速度比冒泡快一倍,比选择也快。
递归
调用自身
汉诺塔问题:
- /**
- * @汉诺塔的问题
- */
- public class HanoiTowers {
- static int count = 0; // 总共要移多少次
- public void moveTowers(int n, String start, String inter, String to) {
- // 柱子的n个圆盘移动到目标柱子上
- count++;
- if (n == 1) {
- System.out.println("从" + start + "到" + to);
- } else {
- // 首先将n-1个盘子移到备用柱,这里用到递归(方法调用方法本身),以便得到最底下最大的盘子
- moveTowers(n - 1, start, to, inter);
- System.out.println("从" + start + "到" + to);
- // 然后把n-1个备用柱上的盘子移到目标柱子上
- moveTowers(n - 1, inter, start, to);
- }
- }
- public static void main(String[] args) {
- new HanoiTowers().moveTowers(3, "A", "B", "C");
- System.out.println("总共要移动" + count+"次");
- }
- }