Program merge sort
#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;
}
Kamis, 14 April 2016
Langganan:
Posting Komentar (Atom)
Refleksi minggu ke 2
Refleksi Pertemuan ke 2 Assalamu'alaikum w. wb., Selamat berjumpa lagi teman-teman, baik saya disini akan menuliskan tentang refl...
-
KATA PENGANTAR Puji dan syukur kami panjatkan kepada Allah SWT, karena atas rahmat dan karunia-Nya kami dapat menyelesaikan tugas ini...
-
Pertemuan ke-1 Buatlah contoh yang paling sering menjadi kegiatan sehari-hari dari : - Algoritma - Pemrograman Cara memas...
-
Algoritma menetukan segitiga {Dibaca 3 bilangan segmen garis, kemudian menentukan apakah membentuk segitiga} Deklarasi a,b,c : float...
Tidak ada komentar:
Posting Komentar