TUTORIAL INSTAL LINUX
KIDZ (BLOG ANAK NAKAL)
Minggu, 28 Februari 2016
Rabu, 03 Juni 2015
Searching (Sequential Search dan Binarry Search)
Hola bos saat ini saya akan mempublikasikan materi yang cukup rumit, mau tau apa dan seperti apa? check it out..
Pengertian Searching
Searching adalah pencarian data dengan cara menelusuri data-data tersebut. Tempat pencarian data dapat berupa array dalam memori (pencarian internal), bisa juga pada file pada external storage (pencarian external). Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner. Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sequential digunakan apabila data dalam keadaan acak atau tidak terurut (contoh: sequential search). Sebaliknya, pencarian biner/binarry digunakan pada data yang sudah dalam keadaan terurut.
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. Pencarian berurutan menggunakan prinsip sebagai berikut : data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data tersebut ditemukan atau tidak ditemukan.
Contoh program C++:
#include<iostream.h>
#include<conio.h>
main() {
int data[8] = {8,10,6,-2,11,7,1,100};
int cari;
int tanda=0;
cout<<"masukkan data yang ingin dicari = "; cin>>cari;
for(int i=0;i<8;i++){
if(data[i] == cari) tanda=1;
}
if(tanda==1) cout<<"Data ada!\n";
else cout<<"Data tidak ada!\n";
}
Binarry Search
Salah satu syarat agar binary search dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, binary search tidak dapat dilakukan.
Prinsip dari binary search dapat dijelaskan sebagai berikut :
Prinsip dari binary search dapat dijelaskan sebagai berikut :
- Mula-mula diambil posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data tengah.
- Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah –1.
- Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1. Jika data sama, berarti ketemu.
Contoh program C++:
#include<iostream.h>
#include<conio.h>
using namespace std;
int main () {
int n, angka[12], kiri, kanan, tengah, temp, key;
bool ketemu = false;
cout<<"Masukan jumlah data : ";
cin>>n;
for(int i=0; i<n; i++)
{
cout<<"Angka ke - ["<<i<<"] : ";
cin>>angka[i];
}
for (int i=0; i<n; i++)
{
for(int j=0; j< n-i-1; j++)
{
if(angka [j] > angka [j+1])
{
temp=angka[j];
angka[j]=angka[j+1];
angka[j+1]=temp;
}
}
}
cout<<"Data yang telah diurutkan adalah : ";
for(int i=0; i<n; i++)
{
cout<<angka[i]<<" ";
}
cout<<"\n Masukan angka yang dicari : ";
cin>>key;
kiri=0;
kanan=n-1;
while(kiri<=kanan)
{
tengah=(kiri + kanan)/2;
if(key == angka[tengah])
{
ketemu=true;
break;
}
else if (key < angka [tengah])
{
kanan = tengah -1;
}
else
{
kiri = tengah +1;
}
}
if (ketemu == true)
cout<<"Angka ditemukan!";
else
cout<<"Angka tidak ditemukan";
return 0;
}
Sekian dari saya, berguna jika untuk mencontek saat UAS & UTS. Thank You..
Referensi:
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
duniadownload.com (E-book)
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
duniadownload.com (E-book)
Sorting (Selection Sort & Insertion Sort) STRUKTUR DATA
Selamat pagi kawan semua, disini saya akan memberikan materi tentang Sorting, untuk lebih lengkapnya check it out..
Pengertian Sorting
Dalam arti bahasa sorting adalah penyortiran atau memilih-milih. Pada struktur data Sorting adalah sebuahmetode untuk pengurutan data, misalnya dari data yang terbesar ke data yang terkecil. Dengan cara program yang dibuat harus dapat membandingkan antar data yang di inputkan.
Artinya jika ada deretan data, maka data yang pertama akan membandingkan dengan data yang kedua. Jika data yang pertama lebih besar dari pada data yang kedua maka data yang pertama akan bertukar posisi dengan data yang kedua, begitu seterusnya sampai benar-benar data terurut dari yang terbesar hingga yang terkecil.
Selection Sort
Selection Sort merupakan salah satu algoritma pengurutan yang sederhana. Ide dasarnya adalah melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.
Selection Sort diakui karena kesederhanaan algoritmanya dan performanya lebih bagus daripada algoritma lain yang lebih rumit dalam situasi tertentu. Algoritma ini bekerja sebagai berikut:
* Mencari nilai minimum (jika ascending) atau maksimum (jika descending) dalam sebuah list.
* Menukarkan nilai ini dengan elemen pertama list
* Mengulangi langkah di atas untuk sisa list dengan dimulai pada posisi kedua
Secara efisien kita membagi list menjadi dua bagian yaitu bagian yang sudah diurutkan, yang didapat dengan membangun dari kiri ke kanan dan dilakukan pada saat awal, dan bagian list yang elemennya akan diurutkan.
Contoh pada C++:
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
main()
{
int x[5];
int i;
int temp;
int minindex;
int j;
clrscr();
cout<<" >> Welcome To The Program Selection Sort << \n" <<endl;
cout<<"masukkan nilai x :\n";
for(i=0; i<5; i++)
{
cout<<"x["<<i<<"] = ";cin>>x[i];
}
cout<<"\n data sebelum di sort :";
for(i=0; i<5;i++)
{
cout<<setw(4)<<x[i];
}
for(i=0; i<5-1; i++) //perulangan iterasi
{
minindex=i;
for(j=i+1; j<5; j++) //perulangan membandingkan data
{
if(x[minindex]>x[j])
{
minindex=j;
}
}
temp=x[i];
x[i]=x[minindex];
x[minindex]=temp;
}
cout<<"\n\nData setelah di sort :";
for(i=0; i<5; i++)
{
cout<<setw(4)<<x[i];
}
getch();
}
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang ada. Inde algoritma dari metode insertion sort ini dapat dianalogikan sama seperti mengurutkan kartu, dimana jika suatu kartu dipindah tempatkan menurut posisinya, maka kartu yang lain akan bergeser mundur atau maju sesuai kondisi pemindahanan kartu tersebut. Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.
Berikut menjelaskan bagaimana algoritma Insertion Sort bekerja dalam pengurutan kartu, Anggaplah kita ingi mengurutkan satu set kartu dari kartu yang bernilai paling kecil hingga yang paling besar.
- Dimulai dengan posisi tangan kosong, dan semua kartu berada diatas meja. Dan anggaplah kita akan menyusun kartu ke tangan kiri kita.
- Mengamil kartu pertama dari meja dan meletakannya ke tangan kiri.
- Mengambil kartu kedua dan membandingkannya dengan kartu yang sudah ada di tangan kiri.
- Jika kartu yang diambil dari meja memenuhi syarat perbandingan, maka kartu tersebut akan diletakan didepan kartu yang dibandingkan, serta kartu yang lain yang telah dibandingkan akan bergeser mundur (ke belakang).
Proses ini akan berlangsung sampai semua kartu akan terurutkan dengan benar sesuai criteria pengurutannya, demikian juga halnya dalam pengurutan data.
Berikut contoh program pada C++:
#include <iostream>
#include <conio.h>
int data[10],data2[10];
int n;
void tukar(int a, int b)
{
int t;
t = data[b];
data[b] = data[a];
data[a] = t;
}
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;
}
}
int main()
{
cout<<"\t\t\t===PROGRAM INSERTION SORT===\n\n"<<endl;
//Input Data
cout<<"Masukkan Jumlah Data : ";
cin>>n;
cout<<"\n";
for(int i=1;i<=n;i++)
{
cout<<"Masukkan data ke "<<i<<" : ";
cin>>data[i];
data2[i]=data[i];
}
insertion_sort();
cout<<"\n\n";
//tampilkan data
cout<<"Data Setelah di Sort : ";
for(int i=1; i<=n; i++)
{
cout<<" "<<data[i];
}
cout<<"\n\nSorting Selesai";
getch();
}
Sekian materi tentang Sorting dari saya semoga bermanfaat.
Referensi:
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
www.slideshare.com
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
www.slideshare.com
Selasa, 02 Juni 2015
Queue (Antrian) STRUKTUR DATA
Halo kawan sahabat blogger, taukah kalian tentang Quaue(antrian) pada Struktur Data? berikut penjelasannya beserta contoh programnya..
Queue (antrian) adalah suatu kumpulan data yang mana penambahan data atau elemen hanya dapat dilakukan pada sisi belakang sedangkan penghapusan atau pengeluaran elemen dilakukan pada sisi depan. Jenis struktur data antrian sering digunakan untuk menstimulasikan keadaan dunia nyata. Antrian banyak dijumpai dalam kehidupan sehari-hari.
Queue (antrian) adalah suatu kumpulan data yang mana penambahan data atau elemen hanya dapat dilakukan pada sisi belakang sedangkan penghapusan atau pengeluaran elemen dilakukan pada sisi depan. Jenis struktur data antrian sering digunakan untuk menstimulasikan keadaan dunia nyata. Antrian banyak dijumpai dalam kehidupan sehari-hari.
Misal : antrian registrasi mahasiswa, tiket kereta api dan lain-lain.
Contoh Queue (antrian) dalam C++;
#include<iostream.h>
#include <stdio.h>
#include <conio.h>
typedef struct
{
int data [6];
int kepala;
int ekor;
}
Queue;
Queue antrian;
void Create()
{
antrian.kepala=antrian.ekor=-1;
}
int kosong()
{
if(antrian.ekor==-1)
return 1;
else
return 0;
}
int penuh()
{
if(antrian.ekor==6-1)
return 1;
else
return 0;
}
void Enqueue(int data)
{
if(kosong()==1)
{
antrian.kepala=antrian.ekor=0;
antrian.data[antrian.ekor]=data;
void Tampil();
{
if(kosong()==0)
{
for(int i=antrian.kepala;i<=antrian.ekor;i++)
{
cout<<antrian.data[i];
}
}
else
cout<<"Data Anda Kosong !\n";
}
}
else
if(penuh()==0)
{
antrian.ekor++;
antrian.data[antrian.ekor]=data;
}
}
int Dequeue()
{
int i;
int e=antrian.data[antrian.kepala];
for(i=antrian.kepala;i<=antrian.ekor-1;i++)
{
antrian.data[i]=antrian.data[i+1];
}
antrian.ekor--;
return e;
}
void hancur()
{
antrian.kepala=antrian.ekor=-1;
cout<<"Data sudah dihancurkan";
}
void Tampil()
{
if (kosong()==0)
{
for (int i=antrian.kepala;i<=antrian.ekor; i++)
{
cout<<antrian.data[i]<<" ";
}
}
else
{
cout<<"Data Anda Kosong\n";
}
}
void main()
{
int pil;
int data;
Create();
do
{
clrscr();
printf ("\n======== MENU ========\n");
printf (" 1. Enqueue\n");
printf (" 2. Dequeue\n");
printf (" 3. Tampil\n");
printf (" 4. Destroy\n");
printf (" 5. Keluar\n");
printf ("======================\n");
printf ("Masukkan Pilihan Anda : ");
cin>>pil;
switch(pil)
{
case 1:
cout<<"Masukan Data : ";
cin>>data;
Enqueue(data);
break;
case 2:
cout<<"Elemen yang keluar : "<< Dequeue();
break;
case 3:
Tampil();
break;
case 4:
hancur();
break;
case 5:
clrscr();
break;
}
getch();
} while(pil!=5);
}
Sekian posting saat ini terimakasih..
Referensi:
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
duniadownload.com (E-book)
Sekian posting saat ini terimakasih..
Referensi:
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
duniadownload.com (E-book)
Stack STRUKTUR DATA
Pengertian Stack
Stack adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO. Dengan demikian, elemen terakhir yang disimpan dalam stack menjadi elemen pertama yang diambil. Dalam proses komputasi, untuk meletakkan sebuah elemen pada bagian atas dari stack, maka kita melakukan push. Dan untuk memindahkan dari tempat yang atas tersebut, kita melakukan pop.
Stack adalah sebuah kumpulan data dimana data yang diletakkan di atas data yang lain. Dengan demikian stack adalah struktur data yang menggunakan konsep LIFO. Dengan demikian, elemen terakhir yang disimpan dalam stack menjadi elemen pertama yang diambil. Dalam proses komputasi, untuk meletakkan sebuah elemen pada bagian atas dari stack, maka kita melakukan push. Dan untuk memindahkan dari tempat yang atas tersebut, kita melakukan pop.
Pada saat ukuran stack, kalau kita teruskan menambah data lagi, akan terjadi overflow. Dengan demikian perlu data tambahan untuk mencatat posisi ujung stack. Dengan kebutuhan seperti ini, kita dapat menyajikan stack dengan menggunakan tipe data struktur (struct) yang terdiri dari dua field. Field pertama bertipe array untuk menyimpan elemen stack, medan kedua bertipe integer untuk mencatat posisi ujung stack.
Contoh program C++:
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#define maxstack 200
struct STACK //membuat jenis data abstrak 'STACK'
{
int top;
char data[maxstack];
};
char dta[maxstack];
struct STACK stackbaru;
void inisialisasi()
{
stackbaru.top = -1;
}
bool isfull() //menanyakan penuhkah?
{
if (stackbaru.top == maxstack-1) return true;
else return false;
}
bool isempty() //menanyakan kosongkah?
{
if (stackbaru.top == -1) return true;
else return false;
}
void push(char dta) //mengisi stack (menyiapkan data)
{
if (isfull() == false)
{
stackbaru.top++;
stackbaru.data[stackbaru.top]=dta;
}
else
{
puts ("\nMaaf Stack penuh");
}
}
void pop() //mengambil isi stack
{
while (isempty() == false)
{
cout<<stackbaru.data[stackbaru.top];
stackbaru.top--;
}
}
void print() //mencetak stack
{
cout<<" ";
for (int i=0; i<=stackbaru.top; i++)
{
cout<<stackbaru.data[i];
}
}
void clear()
{
stackbaru.top = -1;
}
void main()
{
char kata[200];
printf("--- PROGRAM PEMBALIK KALIMAT --- \n\n");
printf("Masukkan kalimat yang Anda inginkan: \n");
gets(kata);
for(int i=0; kata[i]; i++)
push(kata[i]);
printf("------------------------------------ \n\n");
print();
cout<<" menjadi ";
pop();
cout<<"\n";
getche();
}
Buku Struktur Data (Algoritma & Struktur Data 2) dengan C, C++ Ed.5
www.slideshare.com
Langganan:
Postingan (Atom)








