Assalamu’alaikum w.w.,
Pada kesempatan ini saya akan memposting Program dari materi SEARCHING
AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ .
Program yang akan di posting yaitu : Tentang : Pencarian Linear (Linear
Search).
function pencarian Linier(input aray : larik; kunci,
ukuran : integer) : integer
Deklarasi
ketemu : boolean
i, n : integer
Deskripsi
ketemu <-- false;
n <-- 1
while ((n < ukuran) and
(not ketemu)) do
if
(aray[n] = kunci) then
ketemu <-- true
{ data ketemu }
i <-- n
{ pada posisi ke-i }
endif
else n <-- n+1
{ cek data berikutnya }
endwhile
if ketemu then pencarianLinier <-- i
{ data ketemu pada posisi ke-i }
else pencarianLinier <-- -1
{ data tidak ketemu }
endif
end
Berikut ini adalah Gambar Program Flowchart yang
menggunakan Aplikasi RAPTOR :
Output/hasil compiler dari program tersebut :
Dan ini Gambar Program C++ yang Menggunakan Aplikasi
Dev C++ :
#include <iostream>
#define UKURAN 100
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int pencarianLinier(int array[], int kunci, int ukuran){
int i;
for (i=0; i<=ukuran-1; ++i)
if (array[i] == kunci)
return i;
return -1;
}
int main(int argc, char** argv) {
int a[UKURAN], x, kunciPencarian, elemen;
for (x=0; x<=UKURAN-1; x++) a[x] = 2*x;
cout<<"Bilangan yang mau dicari : ";
cin>>kunciPencarian;
elemen = pencarianLinier(a,kunciPencarian,UKURAN);
if (elemen != -1)
cout<<kunciPencarian<<" Ditemukan pada posisi elemen ke " << elemen;
else
cout<<kunciPencarian<<" Tidak ada.";
return 0;
}
#include <iostream>
#define UKURAN 100
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
int pencarianLinier(int array[], int kunci, int ukuran){
int i;
for (i=0; i<=ukuran-1; ++i)
if (array[i] == kunci)
return i;
return -1;
}
int main(int argc, char** argv) {
int a[UKURAN], x, kunciPencarian, elemen;
for (x=0; x<=UKURAN-1; x++) a[x] = 2*x;
cout<<"Bilangan yang mau dicari : ";
cin>>kunciPencarian;
elemen = pencarianLinier(a,kunciPencarian,UKURAN);
if (elemen != -1)
cout<<kunciPencarian<<" Ditemukan pada posisi elemen ke " << elemen;
else
cout<<kunciPencarian<<" Tidak ada.";
return 0;
}
Kasus 8.2 Pencarian Biner (Biner Search)
Pada kesempatan ini saya akan memposting Program dari materi SEARCHING
AND SORTING , program ini akan dibuat dalam Dev C++ .
function pencarianBiner(input aray : larik; kunci, low,
high : integer) : integer
Deklarasi
ketemu : boolean
i, middle :
integer
Deskripsi
ketemu <-- false
while (low <=
high) and (not ketemu) do
middle <-- (low+high)
div 2
if
(kunci = aray[middle]) then ketemu <-- true { data pencarian =
data di tengah }
else
if (kunci < aray[middle]) then high <-- middle – 1 {data akan
dicari lagi di sebelah kiri}
else
low <-- middle + 1 {data akan dicari lagi di sebelah kanan}
endif
endwhile
if ketemu then
pencarianBiner := middle
else
pencarianBiner := -1;
endif
Dan ini kodingan Program C++ yang Menggunakan Aplikasi
Dev C++ :
#include <iostream>
#define UKURAN 15
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void cetakHeader(void){
int i;
cout<<"\nSubscript : \n";
for (i=0;i<=UKURAN-1;i++) cout<<i<<" ";
cout<<"\n";
for (i=1; i <= 4*UKURAN; i++) cout<<"-";
cout<<"\n";
}
void cetakBaris(int b[], int low, int mid, int high){
int i;
for (i=0; i<=UKURAN-1; i++)
if (i<low || i>high) cout<< " ";
else if (i==mid) cout<< "*" <<b[i];
else cout<<b[i] << " ";
cout<<"\n";
}
int pencarianBiner(int b[], int kunciPencarian, int low, int high){
int i, middle;
while (low <= high) {
middle = (low+high) / 2;
cetakBaris(b, low, middle, high);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
high = middle - 1;
else low = middle + 1;
}
return -1;
}
int main(int argc, char** argv) {
int a[UKURAN], i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++) a[i] = 2*i;
cout<<"Masukkan bilangan antara 0-28 : ";
cin>>kunci;
cetakHeader();
hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout<<kunci<<" ditemukan pada posisi : "<< hasil;
else
cout<<kunci<<" tidak ditemukan";
return 0;
}
#include <iostream>
#define UKURAN 15
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
void cetakHeader(void){
int i;
cout<<"\nSubscript : \n";
for (i=0;i<=UKURAN-1;i++) cout<<i<<" ";
cout<<"\n";
for (i=1; i <= 4*UKURAN; i++) cout<<"-";
cout<<"\n";
}
void cetakBaris(int b[], int low, int mid, int high){
int i;
for (i=0; i<=UKURAN-1; i++)
if (i<low || i>high) cout<< " ";
else if (i==mid) cout<< "*" <<b[i];
else cout<<b[i] << " ";
cout<<"\n";
}
int pencarianBiner(int b[], int kunciPencarian, int low, int high){
int i, middle;
while (low <= high) {
middle = (low+high) / 2;
cetakBaris(b, low, middle, high);
if (kunciPencarian == b[middle])
return middle;
else if (kunciPencarian < b[middle])
high = middle - 1;
else low = middle + 1;
}
return -1;
}
int main(int argc, char** argv) {
int a[UKURAN], i, kunci, hasil;
for (i=0; i<=UKURAN-1; i++) a[i] = 2*i;
cout<<"Masukkan bilangan antara 0-28 : ";
cin>>kunci;
cetakHeader();
hasil=pencarianBiner(a,kunci,0,UKURAN-1);
if (hasil != -1) cout<<kunci<<" ditemukan pada posisi : "<< hasil;
else
cout<<kunci<<" tidak ditemukan";
return 0;
}
8.6 Merge Sort
Pada kesempatan ini saya akan memposting Program dari materi SEARCHING
AND SORTING , program ini akan dibuat dalam bentuk Flowchart dan C++ .
Program yang akan di buat yaitu : Tentang : Merge Sort.
Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi
Dev C++ :
#include <iostream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
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);
}
}
int main(int argc, char** argv) {
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;
}
#include <iostream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
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);
}
}
int main(int argc, char** argv) {
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;
}

Output/hasil compiler dari program tersebut :

8.7 Quick Sort
Algoritma :
procedure quick_sort(output data : larik; input L, R :
integer)
Deklarasi
i, j, p : integer
Deskripsi
p <-- data[(L+R)
div 2]
i <-- L
j <--R
{ mulai membuat partisi }
while (i<=j) do
while
(data[i] < p) do i <-- i+1 endwhile
while
(data[j] > p) do j <-- j -1 endwhile
if
(i<=j) then
tukar(data[i],
data[j])
i <-- i+1
j <-- j-1
endif
endwhile
if (L < j) then
quick_sort(data,L,j) endif
if (i < R) then
quick_sort(data,i,R) endif
Dan yang ini Gambar Program C++ yang Menggunakan Aplikasi
Dev C++ :
#include <iostream>
#include <cstdlib>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
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);
}
int main(int argc, char** argv) {
int data[10], n;
cout << "Banyak data : ";
cin >> n;
masuk_data(data,n);
quick_sort(data,0,n-1);
cetak_data(data,n);
return 0;
}


Untuk Buuble Sort Silahkan Liat Disini
Untuk Insertion Sort Silahkan Liat Disini
Untuk Selection Sort Silahkan Liat Disini
Selamat mencoba, dan Semoga bermanfaat ....
Tidak ada komentar:
Posting Komentar