Anda di halaman 1dari 3

Fitra Haryadi 041665966

Struktur Data

Tugas 3 Struktur Data

1. Buatlah sebuah program searching (algoritma sequential search) dengan menggunakan


bahasa Java. Adapun data yang dimasukkan yaitu (20, 30, 40, 50, 60), lakukan pencarian angka
30 pada data tersebut. (50)

Indexed sequence sort adalah algoritma pencarian nilai yang mengembalikan index /urutan data
dari key yang dicari. Pada intinya indexed sequence sort akan membuat index baru yang
menyimpan nilai index yang dicari.

2. package javamain;
3. import java.io.*;
4.
5. public class indexedsequencesort {
6.
7. static void indexedSequentialSearch(int arr[], int n,
8. int k)
9. {
10. // deklarasi array dan variabel yang akan digunakan
11. int elements[] = new int[20];
12. int indices[] = new int[20];
13. int temp, i;
14. int j = 0, ind = 0, start = 0, end = 0, set = 0;
15. for (i = 0; i < n; i += 3) {
16.
17. // Menyimpan element array
18. elements[ind] = arr[i];
19.
20. // Menyimpan index
21. indices[ind] = i;
22. ind++;
23. }
24. if (k < elements[0]) {
25. System.out.println("Not found");
26. return;
27. }
28. else {
29. for (i = 1; i <= ind; i++)
30. if (k <= elements[i]) {
31. start = indices[i - 1];
32. set = 1;
33. end = indices[i];
34. break;
35. }
36. }
37. if (set == 0) {
38. start = indices[i - 1];
39. end = n;
40. }
41. for (i = start; i <= end; i++) {
Fitra Haryadi 041665966
Struktur Data
42. if (k == arr[i]) {
43. j = 1;
44. break;
45. }
46. }
47. if (j == 1)
48.
49. System.out.println("Key ditemukan pada array dengan index = " +
i);
50. else
51. System.out.println("Key tidak ditemukan");
52. }
53.
54.
55. public static void main(String[] args)
56. {
57. int arr[] = { 20, 30, 40, 50, 60 };
58. int n = arr.length;
59.
60. // Elemen yang dicari
61. int k = 30;
62. indexedSequentialSearch(arr, n, k);
63. }
64.
65. }
66.

2. Buatlah sebuah program searching (algoritma binary search) dengan menggunakan bahasa
Java. Adapun data yang dimasukkan yaitu (20, 30, 40, 50, 60), lakukan pencarian angka 30
pada data tersebut. (50)

Pada binary search array akan dibagi-bagi menjadi setengah dan melakukan pencarian ke array2
yang telah dibagi tersebut. Dan pada akhirnya akan mencari ke seluruh bagian array apabila key
tidak ditemukan. Pada pembagian awal array akan dibagi dua kemudian pencarian akan
dilakukan ke sebelah kiri dahulu kemudian apabila tidak ditemukan maka pencarian akan
dilakukan ke sebelah kanan. Begitu pula bias di-implementasikan sebaliknya.

package javamain;

public class Binarysearch {


//implementasi binarysearch recursive
// Mengembalikan index x apabila ditemukan pada array[]
// apabila tidak ditemukan akan mengembalikan -1

int binarySearch(int arr[], int l, int r, int x)


{
if (r >= l) {
Fitra Haryadi 041665966
Struktur Data
int mid = l + (r - l) / 2;

// Jika x ditemukan di middle


// mengembalikan mid
if (arr[mid] == x)
return mid;

// jika index x lebih kecil dari mid


// maka cari ke sebelah kiri mid
if (arr[mid] > x)
return binarySearch(arr, l, mid - 1, x);

// apabila tidak ditemukan pada left


// cari ke sebelah kanan mid
return binarySearch(arr, mid + 1, r, x);
}

// Mengembalikan -1 apabila elemen tidak ditemukan pada array


return -1;
}

//main kode
public static void main(String args[])
{
Binarysearch ob = new Binarysearch();
int arr[] = { 20, 30, 40, 50, 60 };
int n = arr.length;
int x = 30;
int result = ob.binarySearch(arr, 0, n - 1, x);
if (result == -1)
System.out.println("Key tidak ditemukan");
else
System.out.println("Key ditemukan pada index = " + result);
}
}

Anda mungkin juga menyukai