Tugaaskuu
Tugaaskuu
Menginput nama dan npm lalu akan diberikan pertanyaan untuk mencari data
Pertanyaan yg dicari nama/npm
Program
1. package prak_strukturdata;
2. import java.util.Scanner ;
3. import java.util.Arrays;
4.
5. public class TugasPraktekSD {
6.
7.
8. // METHOD SORTING
9. static void Sorting(String [] array , int [] arr)
10. {
11. for (int i = 0 ; i < array.length-1 ; i++)
12. {
13. int min = i ;
14. for(int j = i+1 ; j < array.length ; j++)
15. {
16. if(array[min].compareTo(array[j])>0)
17. {
18. min = j ;
19. }
20. }
21. String penyimpanan = array[i];
22. int simpan = arr[i];
23. array[i] = array[min];
24. arr[i] = arr[min];
25. arr[min] = simpan ;
26. array[min] = penyimpanan ;
27. }
28. }
29.
30. //Method Linear Search
31. static int LinearSearch(String [] array , String key )
32. {
33. for(int i = 0 ; i < array.length ; i++)
34. {
35. if(array[i].equals(key))
36. {
37. return i ;
38. }
39. }
40.
41. return -1 ;
42. }
43.
44. //Method Binary Search
45. static int BinarySearch(String [] array , String key )
46. {
47. int high = array.length;
48. int low = 0 ;
49. while(low<high)
50. {
51. int mid = (high-low)/2;
52. if(array[mid].equals(key))
53. {
54. return mid ;
55. }
56. else if(array[mid].compareTo(key)<0)
57. {
58. low = mid + 1;
59. }
60. else
61. {
62. high = mid - 1;
63. }
64. }
65.
66. return -1 ;
67. }
68.
69. // Method Fibonaci Search
70. static int Minimum(int a , int b)
71. {
72. return a < b ? a : b ;
73. }
74.
75. static int FibonaciSearch(String [] array , String key ,
int n )
76. {
77. int offset = -1 ;
78. int p =0 ;
79. int q = 1 ;
80. int r = p + q ;
81. while(r < n )
82. {
83. p = q ;
84. q = r ;
85. r = p + q ;
86. }
87. while(r > 1)
88. {
89. int i = Minimum(offset+p , n-1);
90. if(array[i].compareTo(key)< 0)
91. {
92. r = q ;
93. q = p ;
94. p = r - q ;
95. offset = i ;
96. } else if (array[i].compareTo(key)>0)
97. {
98. r = p ;
99. q = q - p ;
100. p = r - q ;
101. }
102. else
103. {
104. return i ;
105. }
106.
107. }
108. if(r==1 && array[offset+1].equals(key))
109. {
110. return offset + 1 ;
111. }
112. return -1 ;
113.
114. }
115.
116. public static int binarySearch(String arr[], int
first, int last, String key){
117. int mid = (first + last)/2;
118. while( first <= last ){
119. if ( arr[mid].compareTo(key)<0 ){
120. first = mid + 1;
121. }else if ( arr[mid].equals(key) ){
122. return mid ;
123. // break;
124. }else{
125. last = mid - 1;
126. }
127. mid = (first + last)/2;
128. }
129. if ( first > last ){
130. System.out.println("Element is not found!");
131. }
132. return -1 ;
133. }
134. public static void main(String[] args) {
135. Scanner sc = new Scanner(System.in);
136. Scanner n = new Scanner(System.in);
137. Scanner Nama = new Scanner(System.in);
138. Scanner NPM = new Scanner(System.in);
139. System.out.println("Masukkan Banyaknya Mahasiswa
yang di - Input ");
140. int no = n.nextInt();
141. String [] nama = new String[no];
142. int [] npm = new int[no];
143. for(int i = 0 ; i < no ; i++)
144. {
145. System.out.println("Masukkan Nama Mahasiswa ke "
+(i+1));
146. String s = Nama.nextLine();
147. System.out.println("Masukkan NPM " +s);
148. int npmk = NPM.nextInt();
149. npm[i] = npmk ;
150. nama[i] = s ;
151. }
152. int wk = nama.length;
153. System.out.println("");
154. System.out.println("Array Sebelum di Sorting ");
155. for(int i = 0 ; i < no ; i++)
156. {
157. System.out.println("Nama " +nama[i] +" NPM "
+npm[i]);
158. }
159. // System.out.println(Arrays.toString(nama));
160. Sorting(nama,npm);
161. System.out.println("");
162. System.out.println(" Array Setelah di Sorting ");
163. for(int i = 0 ; i < no ; i++)
164. {
165. System.out.println("Nama " +nama[i] +" NPM "
+npm[i]);
166. }
167. // System.out.println(Arrays.toString(nama));
168. System.out.println("Masukkan Nama Yang Ingin di Cari
-");
169. String s = sc.nextLine();
170.
171. System.out.println("Pencarian dengan menggunakan
Linear Search ");
172. // System.out.println(LinearSearch(nama,s));
173. int nextLinear = LinearSearch(nama,s);
174. if(nextLinear!=-1)
175. {
176. System.out.println("Mahasiswa dengan Nama " +s +" Ada
dalam array dengan Indeks " +nextLinear +" NPM "
+npm[nextLinear]) ;
177. } else
178. {
179. System.out.println("elemen tidak ada dalam array ");
180. }
181. System.out.println("Pencarian dengan menggunakan
Binary Search ");
182. int nextBinary = binarySearch(nama,0,wk,s);
183. if(nextBinary!=-1){
184. System.out.println("Mahasiswa dengan Nama " +s
+" Ada dalam array dengan Indeks " +nextBinary +" NPM "
+npm[nextBinary]) ;
185. }
186. else
187. {
188. System.out.println("elemen tidak ada dalam array ");
189. }
190. System.out.println("Pencarian dengan menggunakan
fibonaci Search ");
191. int nextFibo = FibonaciSearch(nama,s,wk);
192. if(nextFibo!=-1){
193. System.out.println("Mahasiswa dengan Nama " +s
+" Ada dalam array dengan Indeks " +nextFibo +" NPM "
+npm[nextFibo]) ;
194. }
195. else
196. {
197. System.out.println("elemen tidak ada dalam array ");
198. }
199. }
200. }
Output
run:
Masukkan Banyaknya Mahasiswa yang di - Input
2
Masukkan Nama Mahasiswa ke 1
Dody Putra
Masukkan NPM Dody Putra
222510028
Masukkan Nama Mahasiswa ke 2
Roni Putra
Masukkan NPM Roni Putra
222510024
PRAKTIKUM TUGAS
Telah diperiksa pada tanggal:______________ Telah diperiksa pada tanggal:______________