Pada kesempatan kali ini.Kali ini kami akan membahas tentang kasus-kasus dan latihan-latihan yang ada di Diktat Bab 8 ini.
Langsung saja kita ke penyelesaiannya :)
Kasus 7.6
C++
#include <iostream>
using namespace std;
typedef int larik[10];
void masuk_data(int A[], int n)
{ int i;
for (i = 0; i < n; i++)
{ cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void merge(larik a, int kiri, int tengah, int kanan)
{ int bagianKiri, posTemp, banyakElemen, i;
larik temp;
bagianKiri = tengah - 1;
posTemp = kiri;
banyakElemen = kanan - kiri + 1;
while ((kiri <= bagianKiri) &&
(tengah <= kanan))
if ((a[kiri] <= a[tengah]))
{ temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
} else
{ temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi bagian kiri */
while ((kiri <= bagianKiri)) {
temp[posTemp] = a[kiri];
posTemp = posTemp + 1;
kiri = kiri + 1;
}
/* kopi bagian kanan */
while ((tengah <= kanan)) {
temp[posTemp] = a[tengah];
posTemp = posTemp + 1;
tengah = tengah + 1;
}
/* kopi kembali ke array asal */
for (i = 1; i <= banyakElemen; i++)
{ a[kanan] = temp[kanan];
kanan = kanan - 1;
}
}
void merge_sort(larik A, int kiri, int kanan)
{ int tengah;
if ((kiri < kanan))
{ tengah = (kiri + kanan) / 2;
merge_sort(A, kiri, tengah);
merge_sort(A, tengah + 1, kanan);
merge(A, kiri, tengah + 1, kanan);
}
}
main() {
int n;
larik data;
cout << "Berapa data array : ";
cin >> n;
masuk_data(data, n);
cetak_data(data, n);
merge_sort(data, 0, n-1);
cetak_data(data, n);
return 0;
}
Kasus 7.7
C++
#include <iostream>
using namespace std;
void masuk_data(int A[], int n) {
int i;
for (i = 0; i < n; i++) {
cout << "Data ke-%d : ",i+1;
cin >> A[i];
}
}
void cetak_data(const int A[], int n) {
int i;
for (i = 0; i < n; i++)
cout << "%d ",A[i];
cout << "\n";
}
void tukar (int *a, int *b)
{ int temp;
temp = *a;
*a = *b;
*b = temp;
}
void quick_sort(int data[], int L, int R) {
int i, j, p;
p = data[(L+R) / 2];
i = L;
j = R;
while (i<=j) {
while (data[i] < p) i++;
while (data[j] > p) j--;
if (i<=j)
{ tukar(&data[i], &data[j]);
i++;
j--;
}
}
if (L < j) quick_sort(data,L,j);
if (i < R) quick_sort(data,i,R);
}
void main() {
int data[10], n;
cout << "Banyak data : ");
cin >> n);
masuk_data(data,n);
cetak_data(data,n);
quick_sort(data,0,n-1);
cetak_data(data,n);
}
Latihan 8
C++
Latihan 9
C++
Latihan 10
C++
jika Ingin melengkapi jawaban Diktat Bab 8 nomor 1,2,3 dan latihan 1,2,3,4, dan 5 silahkan klik link di bawah ini: http://fitriadinasilmiadiatinewblogaddress.blogspot.co.id/ dan jawaban link di bawah ini http://pusparatna22.blogspot.co.id
. Terima Kasih semoga bermanfaat an selamat mencoba..










Tidak ada komentar:
Posting Komentar