查詢演算法 順序查詢 二分查詢 二叉樹查詢 演算法

2021-06-10 03:22:42 字數 2325 閱讀 7955

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 二分查詢又稱折半查詢,優點是...