演算法導論示例 HashTable

2021-04-07 12:16:37 字數 1517 閱讀 7839

/**

* introduction to algorithms, second edition

* 11.4 open addressing tables

* @author 土豆爸爸

* */

public class hashtable

}

private node table; //直接定址表

private node deleted = new node(0);

/**

* 建構函式。

* @param size 表大小

*/

public hashtable(int size)

/**

* 根據鍵值k查詢節點。需要跳過標記為deleted的位置

* @param k 節點的鍵值

* @return 鍵值為k的節點,未找到返回null

*/

public node search(int k) else if(table[j] != deleted && table[j].key == k)

}

return null;

}

/**

* 插入節點x。根據x.key計算雜湊值,如果雜湊值對應的位置

* 已被佔據,查詢下乙個,直到找到乙個空位或標記為deleted的位置。

* @param x 待插入節點

*/

public void insert(node x)

}

throw new runtimeexception("over flow");

}

/**

* 刪除節點x。將刪除節點標記為deleted。

* @param x 待刪除節點

*/

public void delete(node x)

}

}

/**

* 計算雜湊值

* @param key 鍵值

* @return 雜湊值

*/

private int hash(int key, int i)

public string tostring() else

}

return sb.tostring();

}

}import junit.framework.testcase;

public class hashtabletest extends testcase

}

system.out.println(table);

// 找到乙個節點

hashtable.node node = null;

for (int i = 0; i < 100; i++)

}

assertnotnull(node);

table.delete(node);

assertequals(null, table.search(node.key));

}

}

演算法導論示例 InsertSort

introduction to algorithms,second edition 2.1 insertsort author 土豆爸爸 public class insertsort array i 1 key import junit.framework.testcase public clas...

演算法導論示例 MergeSort

introduction to algorithms,second edition 2.3 mergesort author 土豆爸爸 public class mergesort public static void merge int array,int p,int q,int r l i in...

演算法導論示例 PermuteBySorting

introduction to algorithms,second edition 5.3 permute by sorting author 土豆爸爸 public class permutebysorting 根據隨機數組對目標資料進行排序 sort array,p 根據p對array重排 pa...