Scode Bab 2
Scode Bab 2
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 }}