Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) {
- int m = 20;
- int c = m/2;
- Object[] T = new Object[m];
- Random rand = new Random();
- for(int i = 0; i < m; i++){
- int value = rand.nextInt(m);
- insert(T, value, c, 0, 4);
- }
- System.out.println(Arrays.toString(T));
- }
- protected static void insert(Object[] T, int x, int c, int setLimit, int hashLimit){
- for (int i = 0; i < T.length; i++) {
- int j = Math.floorMod(h(x, T) + i, T.length);
- if (T[j] == null) {
- if (Math.abs(j - h(x,T)) <= c) {
- T[j] = x;
- return;
- } else {
- for (int k = 0; k <= c; k++) {
- int index = Math.floorMod(h(x, T) + k, T.length);
- if (T[index] != null) {
- int y = (int) T[index];
- if (Math.abs(j - h(y, T)) <= c) {
- T[j] = y;
- T[index] = x;
- return;
- }
- }
- }
- }
- }
- }
- rehash(T, x, c, setLimit, hashLimit);
- }
- protected static void rehash(Object[] T, int x, int c, int setLimit, int hashLimit) {
- if (setLimit <= hashLimit) {
- setLimit++;
- Object[] B = new Object[T.length];
- for(int i = 0; i < B.length; i++) {
- if(T[i] != null){
- insert(B, (int) T[i], c, setLimit, hashLimit);
- }
- }
- System.out.println("B " + Arrays.toString(B));
- System.out.println("T " + Arrays.toString(T));
- if (Arrays.equals(T, B)) {
- System.out.println("Element "+ x +" gΓ₯r ej att sΓ€tta in");
- } else {
- T = B;
- }
- }
- }
- protected static int h(int x, Object[] T){
- return Math.floorMod(x, T.length);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement