package lengreen.struct.other;
import lengreen.struct.strategy;
import lengreen.struct.impl.binarytreenode;
import lengreen.struct.impl.integerstrategy;
import lengreen.struct.util.binarytreeutil;
public class search ;
// int end = order(a, 7);
// int end = binrecursion(a, 7, 0, a.length - 1);
int end = bin(a, 7);
system.out.println("所要查詢的數所在位置為:" + end);
// 二叉樹查詢
genroot();
binarytreenode res = bintree(root, 1);
system.out.println(res.getdata());
} // 順序查詢
public static int order(int array, int tar)
} return -1;
} // 二分法查詢遞迴
public static int binrecursion(int array, int tar, int low, int high)
mid = (high + low) / 2;
if (tar == array[mid]) else if (tar > array[mid]) else
return -1;
} // 二分法查詢非遞迴
public static int bin(int array, int tar) else if (array[mid] < tar) else
} return -1;
} // 二叉樹遞迴查詢演算法
public static binarytreenode bintreerecusion(binarytreenode bt, object tar)
switch (strategy.compare(tar, bt.getdata()))
} // 二叉樹非遞迴查詢演算法
public static binarytreenode bintree(binarytreenode bt, object tar)
} return new binarytreenode("null");
} // 二叉樹插入新元素演算法
public static void insertbintree(integer tar) else
} if (tmp == null) else if (strategy.compare(tar, tmp.getdata()) < 0) else
} // 二叉樹刪除元素演算法
public static object remove(integer tar)
binarytreenode del = null;
binarytreenode subtree = null;// 快取子樹
if (!val.hasleftchild() || !val.hasrightchild()) else
// 此時待刪結點只有左子樹或右子樹
if (del.hasleftchild()) else
if (del == root) else if (subtree != null) else
return del.getdata(); }
private static void genroot()
}
二叉樹
package lengreen.struct.util;
import lengreen.struct.node;
import lengreen.struct.impl.binarytreenode;
public class binarytreeutil
// 最大值
public static node max(binarytreenode v)
// 後續節點
public static binarytreenode getsuccessor(binarytreenode v)
// 前驅節點
public static binarytreenode getpredecessor(binarytreenode v)
}
工具類
二分查詢和二叉查詢樹
二分查詢要求元素排列有序。首先,假設表中元素是按公升序排列,將陣列中間位置的元素與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將陣列分成前 後兩個子陣列,如果中間位置記錄的元素大於查詢關鍵字,則進一步查詢前一子陣列,否則進一步查詢後一子陣列。重複以上過程,直到找到滿足條件的記錄,使...
演算法學習 查詢(雜湊,二叉樹,二分,順序)
演算法名稱 平均時間複雜度 雜湊表查詢 o 1 二叉排序樹 o logn 二分查詢法 o logn 順序查詢 o n 說明 文中value表示需要雜湊的值,key表示值在雜湊表的位置 雜湊表採用函式對映的思想將關鍵字和儲存位置關聯起來,如f value key.其查詢 插入,刪除的演算法複雜度均可在...
查詢演算法 順序查詢 二分查詢 分塊查詢
近期總結了各大排序演算法的原理 並對其進行了實現,想著一併把查詢演算法總結了,今天就著手開始總結查詢演算法。關鍵字與陣列中的數順序比較,時間複雜度o n void cgradationdlg onbutfind else if n 10 updatedata false 二分查詢又稱折半查詢,優點是...