Sequential Search

Sequential Search adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu.
Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal).
Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal).

//Contoh Program Sequential Search

#include<iostream.h>
#include<conio.h>
void main()
{
//deklarasi variabel
int a[10],index[10], i,j,k;
//proses penginputan data

for(i=1;i<=10;i++)

{
cout<<”Program Sequential Search”<,endl;
cout<<”masukan data input :”<<endl;
cout<<endl;

cout<<”Data ke ["<<i<<"] = “;
cin>>a[i];
}

//memasukkan data yang akan dicari ke dalam K

cout<<endl;
cout<<”Masukkan data yang akan anda cari = “;
cin>>k;
cout<<endl;

//proses pencarian data
j=0;
for (i=1;i<=10;i++)
{
if(a[i]==k)
{
index[j]=i;
j++;
}
}

//jika data ditemukan dalam array
if (j>0)
{
cout<<”Data “<<k<<” yang dicari ada “<<j<<” buah”<<endl;
cout<<endl;
cout<<”Data tersebut terdapat dalam index ke : “;
for(i=0;i<j;i++)
{
cout<<”  “<<index[i]<< “, “;
}
cout<<endl;
cout<<endl;
}

//jika tidak ditemukan
else
{
cout<<”Data tidak ditemukan dalam array”<<endl;
}
getch();
}

POSTED BY:

NAMA  : I NENGAH SASTRAWAN

NIM       : 080010161

KELAS  : P081

Binary Search

Binary Search adalah pencarian secara biner, digunakan ketika sebuah komputer mencari posisi sebuah simbol,angka,huruf dalam daftar urut. Komputer akan mencari simbol dari tengah daftar sampai data terakhir, dan membandingkannya dengan simbol yang sedang dicari. Apabila simbol tersebut sudah ditemukan, pencarian pada setengah daftar sisanya akan dihentikan.

contoh program :

#include<iostream.h>
#include<conio.h>

void main()
{
//deklarasi variabel

int a[10], i,j,k,tkr,top,bottom,middle,tm;

//proses penginputan data

for(i=1;i<=10;i++)
{
cout<<”Program Sequential Search”<,endl;
cout<<”masukan data input :”<<endl;
cout<<endl;

cout<<”Data ke ["<<i<<"] = “;
cin>>a[i];
}
cout<<endl;
cout<<”Masukkan data yang akan anda cari : “;
cin>>k;

//proses pengurutan data
for(i=0;i<10;i++)
{
for(j=i+1;j<10;j++)
{
if (a[i]>a[j])
{
tkr=a[i];
a[i]=a[j];
a[j]=tkr;
}
}
}

//proses pencarian data
tm=0;
top=9;
bottom=0;
while(top>=bottom)
{
middle=(top+bottom)/2;
if(a[middle]==k)
{
tm++;
}
if(a[middle]<k)
{
bottom=middle+1;
}
else
{
top=middle-1;
}
}
if (tm>0)
{
cout<<”Data “<<k<<” yang dicari ada dalam array”;
}

//jika tidak ditemukan
else
{
cout<<”Data tidak ditemukan dalam array”;
}
getch();
}

POSTED BY:

NAMA  : I NENGAH SASTRAWAN

NIM       : 080010161

KELAS  : P081

Linked List

Linked list adalah salah satu struktur data dasar yang sangat fundamental dalam bidang ilmu komputer. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan. Linked list mirip dangan array, kecuali pada linked list data yang ingin disimpan dapat dialokasikan secara dinamis pada saat pengoperasian program (run-time).

Pada array, apabila programmer ingin menyimpan data, programmer diharuskan untuk mendefinisikan besar array terlebih dahulu, seringkali programmer mengalokasikan array yang sangat besar(misal 100). Hal ini tidak efektif karena seringkali yang dipakai tidak sebesar itu. Dan apabila programmer ingin menyimpan data lebih dari seratus data, maka hal itu tidak dapat dimungkinkan karena sifat array yang besarnya statik. Linked list adalah salah satu struktur data yang mampu menutupi kelemahan tersebut.

Secara umum linked list tersusun atas sejumlah bagian-bagian data yang lebih kecil yang terhubung (biasanya melalui pointer). Linked list dapat divisualisasikan seperti kereta, bagian kepala linked list adalah mesin kereta, data yang disimpan adalah gerbong, dan pengait antar gerbong adalah pointer.

——– ——– ——–

Mesin Data Data

——– ——– ——–

(kepala) —> Pointer —> Pointer –

——– ——– ——–

Programmer membaca data menyerupai kondektur yang ingin memeriksa karcis penumpang. Programmer menyusuri linked list melalui kepalanya, dan kemudian berlanjut ke gerbong (data) berikutnya, dan seterusnya sampai gerbong terakhir (biasanya ditandai dengan pointer menunjukkan alamat kosong (NULL)). Penyusuran data dilakukan secara satu persatu sehingga penyusuran data bekerja dengan keefektifan On. Dibandingkan array, ini merupakan kelemahan terbesar linked list. Pada array, apabilan programmer ingin mengakses data ke-n (index n), maka programmer dapat langsung mengaksesnya. Sedangkan dengan linked list programmer harus menyusuri data sebanyak n terlebih dahulu.
Jenis-Jenis Linked List

* Singly linked list
* Double linked list
* Circular Linked List

Contoh Program :
1. Membuat Single Linked List
6

2. Pencarian Nilai Terkecil dan Nilai Terbesar dalam sebuah Single Linked List
7

POSTED BY:

NAMA  : I NENGAH SASTRAWAN

NIM       : 080010161

KELAS  : P081

POINTER

Pointer adalah suatu variable yang mana nilainya adalah alamat dari suatu variable dalam memory .Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai tertentu.

Bentuk Umum:

namaVariabel;

Contoh: float * pointer;

contoh program

#include<iostream.h>

void main()

{ int nilai[5]={0,1,2,3,4};

int *pointer;

int i ;

for( i =0; i <10; i++)

{

pointer = &nilai[i] ;            //untuk membaca alamat dari nilai

cout<<<” “<< * pointer<<” “<<pointer<<endl;

}

}

POSTED BY:

NAMA  : I NENGAH SASTRAWAN

NIM       : 080010161

KELAS  : P081

ALGORITMA PENGURUTAN DATA PADA C++

CARA-CARA PENGURUTAN DATA PADA ALGORITMA

1. Bubble Sort

Bubble Sort merupakan suatu cara pengurutan data atau file dengan cara saling menukar tempat dalam urutan. Metode ini bekerja dengan efektif dalam mengurutkan file dalam jumlah sedikit.

2. Selection Sort

Selection sort merupakan cara pengurutan data yang memiliki kapasitas yang lebih besar. Kekurangannya yaitu sort dengan menggunakan metode Seleksi membutuhkan ruang di memori untuk meyimpan 2 daftar lengkap.
Jika memiliki satu daftar nama dan meletakkan dalam urutan berdasarkan huruf bisa menggunakan pemdekatan umum sebagai berikut :
a. Temukan atau cari nama yang pertama kali datang dalam urutan huruf dan tulis di sheet kedua
b. Tandai nama yang keluar dari daftar asli
c. Lanjutkan perputaran ini sampai semua nama di daftar semula telah di coret dan ditulis di daftar kedua dimana di bagian daftar yang kedua ini nama-nama sudah terurut berdasarkan huruf

3. Quick Sort

Quick Sort menggunakan metode perbandingan yaitu membandingkan hasil etiap perbandingan sebagai penunjuk ke perbandinga berikutnya.Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan (meja pertama), dan yang telah diurutkan (meja kedua). Elemen pertama yang diambil dari bagian array yang belum diurutkan dan kemudian diletakkan pada posisinya sesuai dengan bagian lain dari array yang telah diurutkan. langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

Berikut contoh program sorting paling komplit.

contoh program c++ :

#include <iostream.h>
#include <conio.h>

int data[100],data2[100];
int n;

void tukar(int a,int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}

void bubble_sort()
{
for(int i=1;i<n;i++)
{
for(int j=n-1;j>=i;j–)
{
if(data[j]<data[j-1]) tukar(j,j-1);
}
}
cout<<”bubble sort selesai!”<<endl;
}

void exchange_sort()
{
for (int i=0; i<n-1; i++)
{
for(int j = (i+1); j<n; j++)
{
if (data [i] > data[j]) tukar(i,j);
}
}
cout<<”exchange sort selesai!”<<endl;
}

void selection_sort()
{
int pos,i,j;
for(i=0;i<n-1;i++)
{
pos = i;
for(j = i+1;j<n;j++)
{
if(data[j] < data[pos]) pos = j;
}
if(pos != i) tukar(pos,i);
}
cout<<”selection sort selesai!”<<endl;
}

void insertion_sort()
{
int temp,i,j;
for(i=1;i<n;i++)
{
temp = data[i];
j = i -1;
while(data[j]>temp && j>=0)
{
data[j+1] = data[j];
j–;
}
data[j+1] = temp;
}
cout<<”insertion sort selesai!”<<endl;
}

void QuickSort(int L, int R) //the best sort i’ve ever had
{
int i, j;
int mid;

i = L;
j = R;
mid = data[(L+R) / 2];

do
{
while (data[i] < mid) i++;
while (data[j] > mid) j–;

if (i <= j)
{
tukar(i,j);
i++;
j–;
};
} while (i < j);

if (L < j) QuickSort(L, j);
if (i < R) QuickSort(i, R);
}

void Input()
{
cout<<”Masukkan jumlah data = “; cin>>n;
for(int i=0;i<n;i++)
{
cout<<”Masukkan data ke-”<<(i+1)<<” = “; cin>>data[i];
data2[i] = data[i];
}
}

void Tampil()
{
cout<<”Data : “<<endl;
for(int i=0;i<n;i++)
{
cout<<data[i]<<” “;
}
cout<<endl;
}

void AcakLagi()
{
for(int i=0;i<n;i++)
{
data[i] = data2[i];
}
cout<<”Data sudah teracak!”<<endl;
}

void main()
{
int pil;
clrscr();
do
{
clrscr();
cout<<”Program Sorting Komplit!!!”<<endl;
cout<<”*********************************************”<<endl;
cout<<” 1. Input Data”<<endl;
cout<<” 2. Bubble Sort”<<endl;
cout<<” 3. Exchange Sort”<<endl;
cout<<” 4. Selection Sort”<<endl;
cout<<” 5. Insertion Sort”<<endl;
cout<<” 6. Quick Sort”<<endl;
cout<<” 7. Tampilkan Data”<<endl;
cout<<” 8. Acak Data”<<endl;
cout<<” 9. Exit”<<endl;
cout<<”    Pilihan Anda = “;  cin>>pil;
switch(pil)
{
case 1:Input(); break;
case 2:bubble_sort(); break;
case 3:exchange_sort(); break;
case 4:selection_sort(); break;
case 5:insertion_sort(); break;
case 6:QuickSort(0,n-1);
cout<<”quick sort selesai!”<<endl;
break;
case 7:Tampil(); break;
case 8:AcakLagi(); break;
}
getch();
}while(pil!=9);
}

POSTED BY:

NAMA  : I NENGAH SASTRAWAN

NIM       : 080010161

KELAS  : P081

Follow

Get every new post delivered to your Inbox.