java版資料結構與演算法—遞迴(漢若塔)
package com.zoujc.triangle;
/**
* 漢諾塔
*/
class TowersApp {
public static void main(String[] args){
doTowers(3,'A','B','C');
}
public static void doTowers(int topN,char from,char inner,char to){
if(topN == 1){
System.out.println("Disk 1 from " + from + " to " + to);
}else {
doTowers(topN-1,from,to,inner);
System.out.println("Disk " + topN + " from " + from + " to " + to);
doTowers(topN-1,inner,from,to);
}
}
}
相關推薦
java版資料結構與演算法—遞迴(漢若塔)
package com.zoujc.triangle; /** * 漢諾塔 */ class TowersApp { public static void main(String[] args){ doTowers(3,'A','B','C'); }
java版資料結構與演算法—遞迴(二分法查詢)
package com.zoujc.triangle; /** * 遞迴:二分查詢 */ class OrdArray { private int[] a; private int nElems; public OrdArray(int max){
java版資料結構與演算法—遞迴(變位字)
package com.zoujc.triangle; import java.io.IOException; /** * 變位字(遞迴的效率並不如for迴圈高) */ class AnagramApp { static int size; static int co
java版資料結構與演算法—遞迴(三角數字)
package com.zoujc.triangle; /** * 遞迴:三角數字 */ class TriangleApp { public static void main(String[] args){ int n = 10; System
js資料結構與演算法--遞迴
遞迴,函式自己呼叫自己 return 返回值, 後面的程式碼不執行 function fn(num){ console.log(num) if(num == 0){ return;
java版資料結構與演算法—線性探測雜湊表
package com.zoujc.hash; /** *雜湊表: 優點:速度快(插入和查詢) * 缺點:基於陣列,不能有序遍歷 * 鍵值對:通過鍵訪問值 * 衝突:不同的關鍵字經過雜湊化得到的陣列下標出現了重複 * 解決衝突:1.開放地址法(線性探測
java版資料結構與演算法—雙端連結串列
/** * 雙端連結串列 */ class MyLinkList { public Link first; public Link last; public MyLinkList(){ first = null; last = nu
java版資料結構與演算法—優先順序佇列
/** * 優先順序佇列,排好序的佇列插入和刪除 */ class PriorityQueue { int a[]; int maxSize; int nItems; public PriorityQueue(int size){ maxS
java版資料結構與演算法—快速排序
/** * @author zoujc * @date 2018/11/15 * 快速排序:時間複雜度:O(NlogN) */ public class ArrayQuickSort { public static void quickSort(int arr[], int low
java版資料結構與演算法—選擇排序
/** * 選擇排序:時間複雜度O(n^2), * 比氣泡排序稍好點,交換次數少 */ class ArraySelect { public static void selectSort(int arr[]){ for(int i=0;i<arr.leng
java版資料結構與演算法—氣泡排序
/** * 氣泡排序規則: * 1.比較兩個相鄰物件 * 2.如果左邊的大於右邊的,則調換位置 * 3.向右移動一個位置,比較接下來的兩個物件 * 時間複雜度:O(log n^2) */ class ArrayBubble { public static void bub
java版資料結構與演算法—插入排序
/** * 插入排序:時間複雜度O(n^2),但比氣泡排序,選擇排序要好 * 把下標為1的先取出來,當做臨時變數,下標為0的元素相當於排好序的 * 然後把下標為1的元素與下標為0的元素比較(升序),如果臨時變數比下標為0 * 的元素小,則下標為0的元素向後移動一個下標,臨時變數插到下
java版資料結構與演算法—佇列、兩個棧實現一個佇列
/** * 佇列:先進先出 */ class MyQueue { int a[]; int maxSize; //大小 int front; //開頭 int rear; //結尾 int nItems; //元素個數 //初始化
java版資料結構與演算法—棧(判斷括號是否匹配)
/** * 括號是否匹配 {} () [] */ class IsMatch { private char arr[]; private int maxSize; private int top; public IsMatch(int size){
java版資料結構與演算法—有序連結串列
package com.zoujc.sortLink; /** * 有序連結串列 */ class Link { public int dData; public Link next; public Link(int dd){ dData = d
java版資料結構與演算法—連結串列實現佇列
package com.zoujc.QueueLink; /** * 連結串列實現佇列 */ class FirstLastList { private Link first; private Link last; public FirstLastList(){
java版資料結構與演算法—連結串列實現棧
package com.zoujc; /** * 用連結串列實現棧 */ class MyLinkStack { private Link first; public MyLinkStack(){ first = null; } //判空
java版資料結構與演算法—堆、堆排序
優先順序佇列:用有序陣列實現,刪除最大數最快O(1),插入最慢 用堆實現優先順序佇列,插入和刪除都很快O(logN) 堆:是一種樹,一種特殊的二叉樹 特點: 1.他是完全的二叉樹,除了樹的最後一層節點不需要是滿的,其他一層從左到右都是滿的。 2.它常常用一個數組實現。 3.堆中每一個節點都滿
java版資料結構與演算法—陣列
class ArrayTest { private long[] a; private int nElems; public ArrayTest(int max){ a = new long[max]; nElems
java版資料結構與演算法—佇列
/** * 佇列:先進先出 */ class MyQueue { int a[]; int maxSize; //大小 int front; //開頭 int rear; //結尾 int nItems; //元