-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathradixSort.java
151 lines (150 loc) · 2.82 KB
/
radixSort.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
import java.util.Scanner;
class radixSort
{
int n,N;
Node lh[];
public radixSort(int noe, int m)
{
n = noe;
N = m;
lh = new Node[m];
}
int hash(int k)
{
return k%this.N;
}
void insert(int x)
{
int h = hash(x); //hash value of key to be inserted
if(lh[h]==null) //checks if hash table is empty at hash(k)
{
lh[h] = new Node(x);
}
else
{
Node t = lh[h];
while(t.next!=null)
{
t=t.next; //traversal till empty node
}
Node temp = new Node(x);
t.next = temp;
}
}
void search(int x)
{
int h = hash(x);
if(lh[h]==null)//header node null
{
System.out.println("Key not found !");
return;
}
else
{
Node t = lh[h];
while(t.next!=null)//iterate till last node
{
int p = 0;//counter to keep track of no of probes;
if(t.data==x)
{
System.out.println("Key found at "+h+" probe : "+p);
return;
}
else
{
t = t.next;
p++;
continue;
}
}
}
}
void display()
{
for(int i = 0;i<this.N;i++)
{
System.out.print("At "+i+" : ");
Node t = lh[i];
while(t!=null)
{
System.out.print(t.data+" ");
t = t.next;
}
System.out.println();
}
}
void sort()
{
//implementation of radix SORT
radixSort rs2 = new radixSort(this.n,this.N);
for(int i = 0;i<this.N;i++)
{
Node t = lh[i];
while(t.next!=null)
{
int x = t.data;
int v = (int) Math.round(x%Math.pow(this.N, i));
if(lh[v]==null)
{
rs2.insert(x);
}
else
{
Node temp = lh[v];
while(temp.next!=null)
{
temp = temp.next;
}
Node t1 = new Node(x);
temp.next = t1;
}
t = t.next;
}
}
System.out.println("Displaying sorted elements...");
this.display();
}
public static void main(String args[])
{
Scanner S = new Scanner(System.in);
System.out.println("Enter the number of elements to be stored : ");
int noe = S.nextInt();
System.out.println("Enter size of hash table : ");
radixSort rs = new radixSort(noe,S.nextInt());
int ch = 0;
do
{
System.out.println("1/> Insert");
System.out.println("2/> Search");
System.out.println("3/> Display");
System.out.println("4/> Radix Sort");
System.out.println("5/> Exit");
ch = S.nextInt();
switch(ch)
{
case 1:
System.out.println("Enter value to insert : ");
rs.insert(S.nextInt());
break;
case 2:
System.out.println("Enter value to search : ");
rs.search(S.nextInt());
break;
case 3:
rs.display();
break;
case 4:
rs.sort();
break;
case 5:
System.out.println("Exit Prompt!");
break;
default:
System.out.println("Invalid Input!");
break;
}
}
while(ch!=5);
S.close();
}
}