0% found this document useful (0 votes)
21 views7 pages

Scode Bab 2

The document describes a Larik2 class that represents a 2D array. It includes methods to initialize the array, access elements, print the array, find the largest/smallest element, search for an element, copy a subset of the array, and sort the array using selection sort and bubble sort. It also includes a mergesort method to sort arrays.

Uploaded by

nadhirah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views7 pages

Scode Bab 2

The document describes a Larik2 class that represents a 2D array. It includes methods to initialize the array, access elements, print the array, find the largest/smallest element, search for an element, copy a subset of the array, and sort the array using selection sort and bubble sort. It also includes a mergesort method to sort arrays.

Uploaded by

nadhirah
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Soal 1

Larik2.java
1 package ASD2;
2 import java.util.Arrays;
3 public class Larik2 {
private int size; // hanya menyimpan jumlah anggota
4 array
private int[] itemDt; // menyimpan angka-angka anggota
5 array
6 public void buatLarik(int n) {
7 this.size = n; // ukuran array
this.itemDt = new int[this.size]; //membuat
8 template untuk array
9 }
10 public Larik2(int n) {
11 buatLarik(n);
12 }
13 public int getSize() {
14 return this.size;
15 }
16 public Larik2(int[] dt) {
17 buatLarik(dt.length);
18 for (int i = 0; i < dt.length; i++) {
19 isiItem(i, dt[i]);
20 } }
21 public void isiItem(int id, int dt) {
22 this.itemDt[id] = dt;
23 }
24 public void cetak(String komentar) {
25 System.out.println(komentar);
26 for (int i = 0; i < this.size; i++) {
27 System.out.print(this.itemDt[i] + " ");
28 }
29 System.out.println();
30 }
31 public int findBesar() {
32 int besar = this.itemDt[0];
33 for (int i = 1; i < this.size; i++) {
34 if (besar < this.itemDt[i]) {
35 besar = this.itemDt[i];
36 } }
37 return besar;
38 }
39 public int getPosisi(int dtCari) {
40 int pos = -99;
41 boolean ketemu = false;
42 int i = 0;
43 while (!ketemu && i < this.size) {
44 if (dtCari == this.itemDt[i]) {
45 ketemu = true;
46 pos = i;
47 }
48 i++;
49 }
50 return pos;
51 }
52 private int getPosMax(int id) {
53 int max = this.itemDt[id];
54 int posMax = id;
55 for (int i = id + 1; i < size; i++) {
56 if (max <= this.itemDt[i]) {
57 max = this.itemDt[i];
58 posMax = i;
59 } }
60 return posMax;
61 }
62 private int getPosMin(int id) {
63 int min = this.itemDt[id];
64 int posMin = id;
65 for (int i = id + 1; i < size; i++) {
66 if (min >= this.itemDt[i]) {
67 min = this.itemDt[i];
68 posMin = i;
69 } }
70 return posMin;
71 }
public int PencarianBiner(int dtCari, int awal, int
72 akhir) {
73 int pos = -99;
74 int tengah = (awal + akhir) / 2;
75 if (dtCari < this.itemDt[tengah]) {
76 return PencarianBiner(dtCari, awal, tengah);
77 } else if (dtCari > this.itemDt[tengah]) {
return PencarianBiner(dtCari, tengah + 1,
78 akhir);
79 } else if (dtCari == this.itemDt[tengah]) {
80 return tengah;
81 } else {
82 return pos;
83 } }
84 public Larik2 copyLarik(int k, int n) {
85 Larik2 lHasil = null;
86 if (n <= this.size - k) {
87 lHasil = new Larik2(n);
88 int j = 0;
89 for (int i = k; i < k + n; i++) {
90 lHasil.isiItem(j++, this.itemDt[i]);
91 } }
92 return lHasil;
93 }
94 public Larik2 SelectionSort(int pilihan) {
95 Larik2 lsort = copyLarik(0, size);
96 for (int i = 0; i < lsort.getSize(); i++) {
97 int posData;
98 if (pilihan == 0) {
99 posData = lsort.getPosMin(i);
100 } else {
101 posData = lsort.getPosMax(i);
102 }
103 int dt1 = lsort.itemDt[i];
104 int dt2 = lsort.itemDt[posData];
105 lsort.itemDt[i] = dt2;
106 lsort.itemDt[posData] = dt1;
107 }
108 return lsort;
109 }
110 // 1a
111 public int findPosGenap(int x1, int x2) {
112 int genap;
113 for (int i = x1; i <= x2; i++) {
114 for (int j = 0; j < size; j++) {
115 if (itemDt[j] == i) {
116 if (itemDt[j] % 2 == 0) {
117 genap = itemDt[j];
System.out.println(genap + "
118 terletak pada indeks " + j);
119 } } } }
120 return 0;
121 }
122 public void display(int[] y) {
System.out.println("Nilai Array A sesudah di
123 mergesort");
124 for (int i = 0; i < y.length; i++) {
125 System.out.print(y[i] + " ");
126 }
127 System.out.println(""); }
128 //BubbleSort
129 public Larik2 BubbleSort(int pildt) {
130 Larik2 SortBuble = copyLarik(0, size);
131 if (pildt == 0) {
132 int min;
133 for (int i = 0; i < size - 1; i++) {
134 min = i;
135 for (int j = i + 1; j < size; j++) {
if (SortBuble.itemDt[j] <
136 SortBuble.itemDt[min]) {
137 min = j;
138 }}
139 if (min != i) {
140 int temp = SortBuble.itemDt[i];
SortBuble.itemDt[i] =
141 SortBuble.itemDt[min];
142 SortBuble.itemDt[min] = temp;
143 }}
144 } else {
145 int max;
146 for (int i = 0; i < size - 1; i++) {
147 max = i;
148 for (int j = i + 1; j < size; j++) {
if (SortBuble.itemDt[j] >
149 SortBuble.itemDt[max]) {
150 max = j;
151 }}
152 if (max != i) {
153 int temp = SortBuble.itemDt[max];
154 SortBuble.itemDt[max] = temp;
155 }}}
156 return SortBuble; }
157 //MergeSort
158 public void Mergesort(int array[], int l, int h) {
159 int low = l;
160 int hight = h;
161 if (low >= hight) {
162 return; }
163 int mid = (low + hight) / 2;
164 Mergesort(array, low, mid);
165 Mergesort(array, mid + 1, hight);
166 int lastlow = mid;
167 int firsthight = mid + 1;
168 while ((l <= lastlow) && (firsthight <= hight)) {
169 if (array[low] < array[firsthight]) {
170 low++;
171 } else {
172 int temp = array[firsthight];
for (int x = firsthight - 1; x >= low; x--)
173 {
174 array[x + 1] = array[x];
175 }
176 array[low] = temp;
177 low++;
178 lastlow++;
179 firsthight++;
180 } } }
//method untuk mencetak hasil penghitungan pada method
181 mergesort
182 public void Mergesort(int[] dtArray) {
183 Mergesort(dtArray, 0, dtArray.length - 1);
184 display(dtArray);
185 System.out.println(""); }
186 public static void main(String[] args) {
187 int[] A = {2, 34, 5, 7, 10};
188 int[] B = {1, 22, 14, 5, 7};
189 Larik2 lA = new Larik2(A);
190 Larik2 lB = new Larik2(B);
191 lA.cetak("Nilai Array A Sebelum di sort");
lA.SelectionSort(0).cetak("Nilai Array A Sesudah di
192 sort");
193 lB.cetak("Nilai Array B Sebelum di BubbleSort ");
lB.BubbleSort(0).cetak("Nilai Array B Sesudah di
194 BubbleSort ");
195 lA.cetak("Nilai Array A Sebelum di mergesort");
196 lA.Mergesort(A);
System.out.println("Bilangan genap yang ada
197 diantara angka 1 dan 50 ");
198 lA.SelectionSort(0).findPosGenap(1, 50);
199 System.out.println(); }}

Soal 2

Larik.java
1 package ASD2;
2 public class Larik {
3 private int size;
4 private double[] itemDt;
5 public Larik(double[] A) {
6 this.size = A.length;
7 this.itemDt = new double[this.size];
8 for (int i = 0; i < this.size; i++) {
9 this.itemDt[i] = A[i];
10 } }
11 public Larik(int n) {
12 buatLarik(n);
13 }
14 public void buatLarik(int n) {
15 this.size = n;
16 this.itemDt = new double[this.size];
17 }
18 public int getSize() {
19 return this.size;
20 }
21 public double getItem(int i) {
22 return this.itemDt[i];
23 }
24 public static Larik sambung(Larik l1, Larik l2) {
25 // Lengkapi bagian ini
26 int j = 0;
27 Larik l3 = new Larik(l1.size + l2.size);
28 for (int i = 0; i < l1.size; i++) {
29 l3.isiItem(j++, l1.itemDt[i]);
30 }
31 for (int i = 0; i < l2.size; i++) {
32 l3.isiItem(j++, l2.itemDt[i]);
33 }
34 return l3;
35 }
36 public void isiItem(int id, double dt) {
37 this.itemDt[id] = dt;
38 }
39 public void cetak(String komentar) {
40 System.out.println(komentar);
41 for (int i = 0; i < this.size; i++) {
42 System.out.printf("%.2f ", this.itemDt[i]);
43 }
44 System.out.println();
45 }
46 public double findBesar() {
47 double besar = this.itemDt[0];
48 for (int i = 1; i < this.size; i++) {
49 if (besar < this.itemDt[i]) {
50 besar = this.itemDt[i];
51 } }
52 return besar;
53 }
54 public int getPosisi(double dtCari) {
55 int pos = -99;
56 boolean ketemu = false;
57 int i = 0;
58 while (!ketemu && i < this.size) {
59 if (dtCari == this.itemDt[i]) {
60 ketemu = true;
61 pos = i;
62 }
63 i++;
64 }
65 return pos;
66 }
public static Larik copyLarik(int k, int n, Larik l)
67 {
68 // lengkapi bagian ini
69 Larik lHasil = null;
70 if (n <= l.size - k) {
71 lHasil = new Larik(n);
72 int j = 0;
73 for (int i = k; i < k + n; i++) {
74 lHasil.isiItem(j++, l.itemDt[i]);
75 } }
76 return lHasil;
77 }
78 public int getPosBesar(int awal, int akhir) {
79 int posBesar = -1;
80 double itemBesar = 0;
81 if (awal <= akhir) {
82 posBesar = awal;
83 itemBesar = this.getItem(awal);
84 for (int i = awal + 1; i < akhir; i++) {
85 double nilaiItem = this.getItem(i);
86 if (itemBesar < nilaiItem) {
87 itemBesar = nilaiItem;
88 posBesar = i;
89 } } }
90 return posBesar;
91 }
92 public int getPosKecil(int awal, int akhir) {
93 // lenkapi bagian ini
94 int posKecil = -1;
95 double itemKecil = 0;
96 if (awal <= akhir) {
97 posKecil = awal;
98 itemKecil = this.getItem(awal);
99 for (int i = awal + 1; i < akhir; i++) {
100 double nilaiItem = this.getItem(i);
101 if (itemKecil > nilaiItem) {
102 itemKecil = nilaiItem;
103 posKecil = i;
104 } } }
105 return posKecil;
106 }
public static Larik SelectionSort(Larik lAsal, int
107 status) {
108 int n = lAsal.getSize();
109 Larik lhasil = Larik.copyLarik(0, n, lAsal);
if (status == 0) {// urutkan data dari kecil ke
110 besar
111 for (int i = 0; i < n; i++) {
112 int posKecil = lhasil.getPosKecil(i, n);
113 double itemKecil=lhasil.getItem(posKecil);
114 double itemI = lhasil.getItem(i);
115 lhasil.isiItem(i, itemKecil);
116 lhasil.isiItem(posKecil, itemI);
117 }
118 } else { // urutkan data dari besar ke kecil
119 for (int i = 0; i < n; i++) {
120 int posBesar = lhasil.getPosBesar(i, n);
121 double itemBesar=lhasil.getItem(posBesar);
122 double itemI = lhasil.getItem(i);
123 lhasil.isiItem(i, itemBesar);
124 lhasil.isiItem(posBesar, itemI);
125 } }
126 return lhasil;
127 }
128 static double LarikKaliLarik(Larik l1, Larik l4) {
129 double hasilKali = 0;
130 for (int i = 0; i < l1.size; i++) {
131 for (int j = 0; j < l4.size; j++) {
132 if (i == j) {
133 hasilKali = hasilKali + l1.itemDt[i] * l4.itemDt[j];
134 }}}
135 return hasilKali;
136 }
137 public static void main(String[] args) {
138 // implementasi untuk ADT_Larik
139 double[] A = {3, 4, 1, 10, 5, 2, 10, 20, 16};
140 double[] B = {4, 3, 1, 11, 7};
141 Larik L1 = new Larik(A);
142 Larik L2 = new Larik(B);
143 L1.cetak("Isi Larik L1");
144 L2.cetak("Isi Larik L2");
145 Larik L3 = Larik.sambung(L1, L2);
146 L3.cetak("L3 = gabungan dari L1 dan L2");
147 Larik L4 = Larik.copyLarik(0, L1.getSize(), L1);
148 L1.cetak("Isi Larik L1");
149 L4.cetak("L4 Copy dari L1");
150 Larik L5 = Larik.SelectionSort(L1, 0);
L5.cetak("L5 Hasil pengurutan dari L1 Kecil ->
151 Besar");
152 Larik L6 = Larik.SelectionSort(L1, 1);
L6.cetak("L6 Hasil pengurutan dari L1 Besar ->
153 Kecil");
154 L1.cetak("Isi Larik L1");
155 double hasil = Larik.LarikKaliLarik(L1,L4);
System.out.printf("HASIL KALI Larik L1*L4 : %.3f\n
156 ", hasil);
157 }}

You might also like