#include <stdio.h>
#include <conio.h>
void main() {
int i1, i2, i3; //Deklarasi aindex array
int j1, j2, j3; //Deklarasi index pembantu
int n1, n2, n3; //Deklarasi untuk jumlah data
int Tmp1, Tmp2; //Deklarasi penampung 1 dan 2
int Arr1[50], Arr2[50]; //Deklarasi array 1 dan 2
int Arr3[100]; //Deklarasi array gabungan
//Baca Array pertama
printf("Masukan jumlah data pada array 1 : ");
scanf("%i", &n1);
for(i1 = 0; i1 < n1; i1++) { //Ulang untuk inputan array pertama
printf("Masukan data ke %i : ", i1 + 1);
scanf("%i", &Arr1[i1]);
}
//Baca Array kedua
printf("Masukan jumlah data pada array 2 : ");
scanf("%i", &n2);
for(i2 = 0; i2 < n2; i2++) { //Ulang untuk inputan array pertama
printf("Masukan data ke %i : ", i2 + 1);
scanf("%i", &Arr2[i2]);
}
//Urutkan array pertama
for(i1 = 1; i1 < n1; i1++) { //Ulang untuk tiap elemen dari data kedua
Tmp1 = Arr1[i1]; //Tampung tiap data
j1 = i1 - 1; //Set index j1 = i1 - 1
while(Arr1[j1] >= Tmp1 && j1 > 0) { //Ulang sampai Array j1 lebih dari Tmp dan j1 > 0
Arr1[j1 + 1] = Arr1[j1]; //Sisipkan data Array j1 ke Array j1 + 1
j1 = j1 - 1; //Lanjutkan perulangan
}
//Cek Hasilnya
if(Tmp1 >= Arr1[j1]) { //Jika Tmp lebih besar array j
Arr1[j1 + 1] = Tmp1; //Maka data Arr[j + 1] dikembalikan ke nilai awal
} else { //Selainnya
Arr1[j1 + 1] = Arr1[j1]; //Tukar Nilai antara Array j + 1 dengan j
Arr1[j1] = Tmp1; //Nilai Array j diisi oleh Tmp
}
}
//Urutkan array Kedua
for(i2 = 1; i2 < n2; i2++) { //Ulang untuk tiap elemen dari data kedua
Tmp2 = Arr2[i2]; //Tampung tiap data
j2 = i2 - 1; //Set index j1 = i1 - 1
while(Arr2[j2] >= Tmp2 && j2 > 0) { //Ulang sampai Array j1 lebih dari Tmp dan j1 > 0
Arr2[j2 + 1] = Arr2[j2]; //Sisipkan data Array j1 ke Array j1 + 1
j2 = j2 - 1; //Lanjutkan perulangan
}
//Cek Hasilnya
if(Tmp2 >= Arr2[j2]) { //Jika Tmp lebih besar array j
Arr2[j2 + 1] = Tmp2; //Maka data Arr[j + 1] dikembalikan ke nilai awal
} else { //Selainnya
Arr2[j2 + 1] = Arr2[j2]; //Tukar Nilai antara Array j + 1 dengan j
Arr2[j2] = Tmp2; //Nilai Array j diisi oleh Tmp
}
}
//Penggabungan 2 array yang telah terurut
i1 = n1 - 1; //Index 1 diisi jumlah array pertama
i2 = n2 - 1; //Index 2 diisi jumlah array kedua
i3 = 0; //Index 3 diset 0
if(i1 < i2) n3 = i1; else n3 = i2; //Jika i1 < i2
for(i1 = n3; i1 >= 0; i1--) { //Baca data array1 secara mundur sampai ke 0
if(Arr1[i1] < Arr2[i2]) { //Jika Array pertama < Array kedua
Arr3[i3] = Arr1[i1]; //Isi array ketiga dengan array pertama
i3 = i3 + 1; //Tambah jumlah index 3
} else if(Arr1[i1] == Arr2[i2]) { //Jika Array pertama = Array kedua
Arr3[i3] = Arr1[i1]; //Isi array ketiga dengan array pertama
Arr3[i3 + 1] = Arr2[i2]; //Isi array setelahnya dengan array kedua
i2 = i2 - 1; //Kurangi jumlah index 2
i3 = i3 + 2; //Tambah 2 jumlah index 3
} else { //Selainnya
Arr3[i3] = Arr2[i2]; //Isi array ketiga dengan array kedua
i2 = i2 - 1; //Kurangi jumlah index 2
i3 = i3 + 1; //Tambah jumlah index 3
}
}
if(i2 > 0) { //Jika index 2 lebih dari 0
for(j3 = i2; j3 >= 0; j3--) { //Perulangan turun untuk j3 dari i2 sampai 0
Arr3[i3] = Arr2[j3]; //Ganti Arr3 dengan Arr2
i3 = i3 + 1; //Tambah jumlah index 3
}
} else { //Selaiinya
for(j3 = i1; j3 >= 0; j3--) { //Perulangan turun untuk j3 dari i1 sampai 0
Arr3[i3] = Arr1[j3]; //Ganti Arr3 dengan Arr1
i3 = i3 + 1; //Tambah jumlah index 3
}
}
//Tampilkan Hasil
printf("\n\Setelah Pengurutan\n");
for(i1 = 0; i1 < n1; i1++) { //Ulang untuk tampilan array pertama
printf("Elemen ke %i dari array pertama : %i\n", i1 + 1, Arr1[i1]);
}
for(i2 = 0; i2 < n2; i2++) { //Ulang untuk tampilan array kedua
printf("Elemen ke %i dari array kedua : %i\n", i2 + 1, Arr2[i2]);
}
printf("\n"); //New Line
for(i3 = 0; i3 < (n1 + n2); i3++) { //Ulang untuk tampilan array ketiga
printf("Elemen ke %i dari array kedua : %i\n", i3 + 1, Arr3[i3]);
}
getch(); //Tahan tampilan
}
/*-- AUTHOR BY PYXIS_AMIKOM --*/
1 comments:
kok penggabungan 2 arraynya ga berhasil ya..??
Post a Comment