PRAKTIKUM STRUKTUR DATA
NAMA : I Putu Lingga Yastina Iswara
NIM : 140010021
KELAS : AB141
Nama Dosen :IB KETUT SURYA ARNAWA, S.Kom
Asisten Dosen :Steven Anthony
SEKOLAH TINGGI
MANAJEMEN INFORMATIKA DAN TEKNIK KOMPUTER (STMIK) STIKOM BALI
TAHUN 2015
DAFTAR
ISI
1.
Variable
2.
Array Satu Dimensi dan Dua Dimensi
3.
Stack
4.
Queue
5.
Shorting, Insertion Sort & Selection
Sort
6.
Seaching, Sekuensial & Binary
Seach
VARIABLE
Pengertian Variabel
Variabel adalah tempat
untuk menampung data di dalam memory yang mempunyai nilai atau data yang dapat
berubah-ubah selama proses program berjalan. Ada dua jenis variabel yaitu
variabel Global dan variabel Lokal.
Variabel Global variabel
yang dapat dikenali oleh semua lingkungan dalam program, sedangkan variabel lokal
variable hanya dikenali oleh satu fungsi saja. Variabel lokal tidak dapat
dikenali oleh lingkungan lingkungan luar di dalam program tersebut.
Aturan Penamaan Variabel
· Tidak boleh ada spasi, dan dapat menggunakan
Underscore (_) sebagai penghubung.
· Tidak boleh diawali oleh angka.
· Tidak boleh sama dengan nama keywod reserved,
function, dan harus unik.
· Maksimal 32 karakter.
· Membedakan huruf besar dan huruf kecil (case
sensitive).
Deklarasi Variabel
Deklarasi variabel
adalah proses memperkenalkan variabel kepada program dan pendeklarasian
tersebut bersifat mutlak karena jika tidak diperkenalkan terlebih dahulu maka
program tidak akan menerima variabel tersebut. Pendeklarasian variabel meliputi
tipe variabel (char,int,float,double,logint), dan pemberian nama variabel. Dan
variabel harus di akhiri dengan tanda titik koma(;).
Penulisan variabel
Tipe_data Nama_variabel;
Contoh penulisan variabel
Void
main(){
char mahasiswa;
char IPK;
float rata-rata;
int nilai;}
memberikan nilai ke variabel
Nama_variabel = nilai;
Contoh pemberian nilai variabel
Var_bilangan = 31;
Deklarasi Variabel dalam Bahasa C++
#include<iostream.h>
#include<conio.h>
void
main()
{
int
L=1500; cout<<"Tampilkan Nilai Dari L = "<<G;
getch();
}
ARRAY SATU
DIMENSI
Larik atau Array merupakan sekumpulan
data. data yang terkandung dalam suatu larik (Array) harus bertipe sama ,
sekumpulan data semacam itu bisa melibarkan tipe data yang berbeda - beda
Larik (Array) disebut jg variabel berindeks. nilai suatu data dalam array ditentukan oleh nama dan indeksnya. Array banyak digunakan pada operasi yg melibatkan indeks seperti pada statistik.
di dalam arlgoritma aray dinyatakan dengan awalan huruf kapital dan notasi [] dipakai untuk menyatakan data di dalam array.
Contoh :
A [1.2.4.5.]
menyatakan bahwa Array A berisi data 1,2,4 dan 5
pada contoh di atas Array A memiliki empat buat elemen.
untuk menyatakan sebuah elemen dalam array atau Pengaksesan elemen array dapat menggunakan notasi :
Nama_array [indeks]
indeks digunakan untuk menyatakan posisi elemen. Posisi pertama berawalan dari 0 dan posisi kedua berawalan dari 1 dan seterusnya
Larik (Array) disebut jg variabel berindeks. nilai suatu data dalam array ditentukan oleh nama dan indeksnya. Array banyak digunakan pada operasi yg melibatkan indeks seperti pada statistik.
di dalam arlgoritma aray dinyatakan dengan awalan huruf kapital dan notasi [] dipakai untuk menyatakan data di dalam array.
Contoh :
A [1.2.4.5.]
menyatakan bahwa Array A berisi data 1,2,4 dan 5
pada contoh di atas Array A memiliki empat buat elemen.
untuk menyatakan sebuah elemen dalam array atau Pengaksesan elemen array dapat menggunakan notasi :
Nama_array [indeks]
indeks digunakan untuk menyatakan posisi elemen. Posisi pertama berawalan dari 0 dan posisi kedua berawalan dari 1 dan seterusnya
Deklarasi Array Satu Dimensi dengan Bahasa C++
#include<iostream.h>
#include<conio.h>
void main ()
{
int nilai[6];
for(int i=0; i<6;i++)
{
cout<<"Masukan
Nilai Index Ke ["<<i<<"] = ";
cin>>nilai[i];
}
cout<<"============================"<<endl;
for (int b=0; b<6;b++)
{
cout<<"Hasil
Nilai Index Ke ["<<b<<"]="<<b<<endl;
}
getch();
}
ARRAY DUA
DIMENSI
Array berdimensi 2 sering digambarkan
sebagai sebuah matriks. Dimana array berdimensi 1 hanya terdiri dari satu baris
dan banyak kolom, sedangkan array berdimensi 2 terdiri dari banyak baris dan
banyak kolom yang bertipe sama.
Pendeklarasian array 2 Dimensi
Tipe_data
Nama_array[jumlah_baris] [jumlah_kolom];
Dimana Tipe_data menyatakan jenis tipe
data elemen array (int,char,float). Nama_array menyatakan nama variabel yang
dipakai. Jumlah_baris menunjukan jumlah maksimal baris. Jumlah_kolom menunjukan
jumlah maksimal kolom.
Inisialisasi array
Memberikan
nilai awal trhadap suatu variabel.
Tipe_data Nama_array[jumlah_elemen] =
(nilai_array)
Contoh: int data
[2][5]={{2.3.4.5.6},{4,5,3,6,7}};
Deklarasi Array Dua Dimensi dalam Bahasa C++
#include<iostream.h>
void main()
{
int A[10];
int i,jml,max;
//isi data
jml=0;
for(i=0;i<=9;i++)
{
cout<<"Inputkan data ke-"<<i<<":";
cin>>A[i];
jml=jml+A[i];
}
//tampilkan data
for(i=0;i<=9;i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
for(i=0;i<=9;i++)
{
cout<<&A[i]<<" ";
}
cout<<endl;
cout<<"Hasil penjumlahan = "<<jml<<endl;
max=A[0];
for(i=1;i<=9;i++)
{
if (A[i]>max)
max=A[i];
}
cout<<"Bilangan terbesar = "<<max<<endl;
}
STACK
Stack adalah suatu daftar atau urutan elemen yang
elemennya dapat diambil dan ditambah hanya hanya melalui satu jalur saja, yaitu
bagian depan list.
Contoh dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas pula.
yaitu Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack
Ada 2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :
Contoh dalam kehidupan sehari-hari adalah tumpukan buku di perpustakaan yang tumpukannya dapat ditambah pada bagian paling atas dan mengambilnya dari bagian paling atas pula.
yaitu Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack
Ada 2 operasi paling dasar yang penting dari stack yang dapat dilakukan, yaitu :
1. Operasi push yaitu operasi menambahkan
elemen data pada urutan terakhir (paling atas).
2. Operasi pop yaitu operasi mengambil
sebuah elemen data pada urutan terakhir dari stack.
Tumpukan disebut juga “Push Down Back” yaitu penambahan elemen baru (push) dan penghapusan elemen dari tumpukan (pop) Untuk mengimplementasikan stack, bisa menggunakan linked list atau juga array, tergantung pada permasalahan yang dihadapi. Apabila permasalahan yang dihadapi adalah permasalahan tumpukan (stack) dimana jumlah elemen maksimum dibatasi, maka bisa digunakan array. Apabila jumlah elemen maksimumnya tidak dibatasi, maka linked list lebih tepat digunakan.
Salah satu konsep yang efektif untuk menyimpan dan mengambil data adalah “terakhir masuk sebagai yang pertama keluar akan menjadi elemen yang akan dihapus. ” (Last in First
Out/LIFO). Dengan konsep ini, pengambilan data akan berkebalikan urutannya dengan penyimpanan data.
Deklarasi
Stack dengan Bahasa C++
#include<iostream.h>
#define n 10
void main()
{
int S[n];
int x,top;
top=-1;
while (top<=n-1)
{
cout<<"Inputkan isi stack : ";
cin>>x;
top=top+1;
S[top]=x;
}
cout<<"Isi stack : "<<endl;
while (top>=0)
{
x=S[top];
cout<<x<<" ";
top=top-1;
}
}
QUEUE
Pengertian Queue
Queue adalah kumpulan data dengan penambahan
data hanya melalui satu sisi,yaitu sisi blakang dan penghapusan data hanya
melalui sisi depan. Queue merupakan salah satu struiktur data yang memiliki
sistemkerja FIFO (Fisrt In First Out). Dimana data yang pertama kali masuk maka
data tersebut akan keluar lebih dulu.
Di
dalam Queue mempunyai dua kata kunci yaitu Head dan Tail. Head adalah penanda
urutan paling depan. Tail adalah penanda urutan paling belakang.
Deklarasi Queue
Variabel yang digunakan adalah data, head, tail. Nilai dari head dan tail
dimulai dari -1 yang menandakan Queue kosong. Contoh Queue menggunakan
maksimal 5 data.
Operasi Queue
1. IsEmpty : Mengecek apakah Queue kosong atau tidak.
2. IsFull : Mengecek apakah Queue sudah penuh atau tidak.
3. EnQueue : Menabah data di Queue.
4. Dequeue : Mengambil data dari Queue.
5. Clear : Menghapus data dalam elemn.
6. View : Meliahat data dalam antrian.
· IsEmpty
IsEmpty digunakan untuk mengecek apakah Queue Kosong atau tidak. Indikator
bahwa Queue kosong adalah nilai dari head dan tail adalah -1.
· IsFull
IsFull digunakan untuk mengecek apakah antrian sudah penuh atau tidak. Indicator
kalau Queue penuh adalah nilai tail = max-1
· Enqueue
Enqueue digunakan untuk memasukkan data kedalam Queue. Sebelum memasukkan data
ke dalam antrian , harus dipastikan apakah antrian penuh atau tidak. Kalau
antrian tidak penuh maka dilakukan pengecekan apakah head sudah berada di nilai
0 atau belum.
· Dequeue
Dequeue digunakan untuk mengambil data yang sudah masuk di urutan pertama.
Sehingga Tinggal membaca data yang ada di posisi head.cek apakah queue kosong
atau tidak, jika ada isinya ,setelah data di ambil data dibelakangnya digeser
ke depan.
· Clear
Clear digunakan untuk menghapus data di dalam queue. Caranay mengubah nilai
pada head dan tail menjadi -1.
· View
View digunakan untuk melihat data yang didalam Queue. Caranya dengan mambaca
data pada indeks yang terdapat diantara head sampai tail.
Deklarasi Queue dalam Bahasa C++
#include
<iostream.h>
#include <conio.h>
#include <stdlib.h>
#define n 10
int Q[n],L,R,x;
void awal()
{
R=-1;L=0;
}
void insertkiri()
{
cout<<"Inputkan data :";cin>>x;
if (L>0)
{
L--;
Q[L]=x;
}
else
cout<<"Antrian penuh kiri";
}
void insertkanan()
{
cout<<"Inputkan data :";cin>>x;
if (R<n-1)
{
R++;
Q[R]=x;
}
else
cout<<"Antrian penuh kiri";
}
void deletekiri()
{
if (L<R+1)
{
x=Q[L];
L++;
cout<<x;
}
else
cout<<"Antrian kosong";
}
void deletekanan()
{
if (L<R+1)
{
x=Q[R];
R--;
cout<<x;
}
else
cout<<"Antrian kosong";
}
void main()
{
int pilih;
char jawab;
awal();
jawab='y';
while ((jawab=='y')||(jawab=='Y'))
{
clrscr();
cout<<"1.INSERT KIRI"<<endl;
cout<<"2.INSERT KANAN"<<endl;
cout<<"3.DELETE KIRI"<<endl;
cout<<"4.DELETE KANAN"<<endl;
cout<<"5.EXIT"<<endl;
cout<<"Inputkan pilihan :";cin>>pilih;
switch (pilih)
{
case 1:
insertkiri();
break;
case 2:
insertkanan();
break;
case 3:
deletekiri();
break;
case 4:
deletekanan();
break;
case 5:
exit;
break;
}
cout<<endl<<"Ulangi proses lagi ? [y/t]";
cin>>jawab;
}
}
#include <conio.h>
#include <stdlib.h>
#define n 10
int Q[n],L,R,x;
void awal()
{
R=-1;L=0;
}
void insertkiri()
{
cout<<"Inputkan data :";cin>>x;
if (L>0)
{
L--;
Q[L]=x;
}
else
cout<<"Antrian penuh kiri";
}
void insertkanan()
{
cout<<"Inputkan data :";cin>>x;
if (R<n-1)
{
R++;
Q[R]=x;
}
else
cout<<"Antrian penuh kiri";
}
void deletekiri()
{
if (L<R+1)
{
x=Q[L];
L++;
cout<<x;
}
else
cout<<"Antrian kosong";
}
void deletekanan()
{
if (L<R+1)
{
x=Q[R];
R--;
cout<<x;
}
else
cout<<"Antrian kosong";
}
void main()
{
int pilih;
char jawab;
awal();
jawab='y';
while ((jawab=='y')||(jawab=='Y'))
{
clrscr();
cout<<"1.INSERT KIRI"<<endl;
cout<<"2.INSERT KANAN"<<endl;
cout<<"3.DELETE KIRI"<<endl;
cout<<"4.DELETE KANAN"<<endl;
cout<<"5.EXIT"<<endl;
cout<<"Inputkan pilihan :";cin>>pilih;
switch (pilih)
{
case 1:
insertkiri();
break;
case 2:
insertkanan();
break;
case 3:
deletekiri();
break;
case 4:
deletekanan();
break;
case 5:
exit;
break;
}
cout<<endl<<"Ulangi proses lagi ? [y/t]";
cin>>jawab;
}
}
SORTING
METODE PENGURUTAN (SHORTING)
Sorting adalah penyortiran atau memilih-milih. Pada struktur data Sorting adalah sebuah metode 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
Pengurutan seleksi (selection sort) mempunyai mekanisme mekanisme sebagai berikut :
Mula-mula suatu petunjuk (diberi nama posAWAL), yang menunjuk ke lokasi awal pengurutan data, diatur agar berisi indeks dalam array. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang di tunjuk oleh penunjuk tersbut sehingga elemen yang trakhir dalam array , lokasi bilangan ini ditunjukan oleh posMIN. lalu di tukarkan nilai bilangan terkecil tersebut dengan nilai yang ditunjuk oleh PosAWAL. proses seperti itu diulang dari posAWAL bernilai 0 hingga n-2
dengan menyertakan jumlah elemen dari array
INSERTION SORT
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang ada.
Pengurutan dengan metode penyisipan (insertion sort) adalah suatu metode yang melakukan pengurutan dengan cara menyisipkan data yang belum urut ke dalam bagian data yang telah diurutkan.
konsep seperti ini biasa dilakukan pada permainan kartu. ketika sebuah kartu baru didapatkan (hasil pembagian pengocokan kartu) kartu akan disisipkan oleh pemain pada posisi yang tepat
sehingga penambahan kartu tersebut membuat semua kartu tetap terurut
Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.
Sorting adalah penyortiran atau memilih-milih. Pada struktur data Sorting adalah sebuah metode 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
Pengurutan seleksi (selection sort) mempunyai mekanisme mekanisme sebagai berikut :
Mula-mula suatu petunjuk (diberi nama posAWAL), yang menunjuk ke lokasi awal pengurutan data, diatur agar berisi indeks dalam array. Selanjutnya dicari bilangan terkecil yang terletak antara posisi sesudah yang di tunjuk oleh penunjuk tersbut sehingga elemen yang trakhir dalam array , lokasi bilangan ini ditunjukan oleh posMIN. lalu di tukarkan nilai bilangan terkecil tersebut dengan nilai yang ditunjuk oleh PosAWAL. proses seperti itu diulang dari posAWAL bernilai 0 hingga n-2
dengan menyertakan jumlah elemen dari array
INSERTION SORT
Insertion sort adalah sebuah metode pengurutan data dengan menempatkan setiap elemen data pada pisisinya dengan cara melakukan perbandingan dengan data – data yang ada.
Pengurutan dengan metode penyisipan (insertion sort) adalah suatu metode yang melakukan pengurutan dengan cara menyisipkan data yang belum urut ke dalam bagian data yang telah diurutkan.
konsep seperti ini biasa dilakukan pada permainan kartu. ketika sebuah kartu baru didapatkan (hasil pembagian pengocokan kartu) kartu akan disisipkan oleh pemain pada posisi yang tepat
sehingga penambahan kartu tersebut membuat semua kartu tetap terurut
Dalam pengurutan data, metode ini dipakai bertujuan untuk menjadikan bagian sisi kiri array terurutkan sampai dengan seluruh array diurutkan.
Deklarasi Insertion Sort dan Selection Sort dalam Bahasa C++
1. #include<iostream.h>
2. #include<conio.h>
3. int data[10];
4. int n;
5.
6. void tukar(int a, int b)
7. {
8. int t;
9. t=data[b];
10. data[b]=data[a];
11. data[a]=t;
12. }
13.
14. void selection_sort()
15. {
16. int pos,i,j;
17. for(i=0;i<n-1;i++)
18. {
19. pos=i;
20. for(j=i+1;j<n;j++)
21. {
22. if(data[j]<data[pos])pos=j;
23. }
24. if(pos!=i)
25. {
26. tukar(pos,i);
27. }
28. }
29. cout<<"selection sort selesai
!"<<endl;
30. cout<<"Data : "<<endl;
31. for(int i=0;i<n;i++)
32. {
33. cout<<data[i]<<"
";
34. }
35. cout<<endl;
36. }
37.
38.
39. void insertion_sort()
40. {
41. int temp,i,j;
42. for(i=1;i<n;i++)
43. {
44. temp=data[i];
45. j=i-1;
46. while(data[j]>temp && j>=0)
47. {
48. data[j+1]=data[j];
49. j--;
50. }
51. data[j+1]=temp;
52. }
53. cout<<"Insertion
short selesai ! "<<endl;
54. cout<<"Data : "<<endl;
55. for(int i=0;i<n;i++)
56. {
57. cout<<data[i]<<"
";
58. }
59.
60. cout<<endl;
61. }
62.
63.
64. void input()
65. {
66. cout<<"Masukkan
jumlah data = ";
67. cin>>n;
68. for(int i=0;i<n;i++)
69. {
70. cout<<"Masukkan
data ke - "<<(i+1)<<" = " ;
71. cin>>data[i];
72. }
73. }
74.
75.
76. void main()
77. {
78. int pil;
79. clrscr();
80. do
81. {
82. clrscr();
83. cout<<"1.
Input Data"<<endl;
84. cout<<"2.
Selection Sort"<<endl;
85. cout<<"3.
Insertion Sort"<<endl;
86. cout<<"4.
Exit"<<endl;
87. cout<<"Masukkan
Pilihan anda = ";
88. cin>>pil;
89.
90. switch(pil)
91. {
92. case 1: input();break;
93. case 2: selection_sort();break;
94. case 3: insertion_sort();break;
95. }
96. getch();
97. }
98. while(pil!=4);
99. }
SEARCHING
Searching adalah metode pencarian informasi . searching
digunakan untuk pencarian informasi khusus dari table pada saat lokasi yang
pasti dari informasi tersebut sebelumnya tidak di ketahui. Pencarian selalu
dinyatakan dengan referensi pada adanya sekelompok data tersebut .
Ada dua Teknik searching yaitu sequential
search dan binary search.
· Sequential search
Pencarian
Sequential search pada dasarnya hanya melakukan pengulangan dari 1 samapai
dengan jumlah data. Pada setiap perulangan dibandingkan data ke-I dengan data
yang dicari.. apabiala sama berarti data telah ditemuakan, dan sebaliknya
apabila samapai akhir pengulanagn tidak ada data yang sama berarti data
tersebut tidak ada.
Prinsip sequential search, data yang
dibandingkan satu persatu secara berurutan dengan data yang dicari.
Deklarasi Sequential search dalam Bahasa C++
#include<iostream.h>
#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<<"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();
}
void main()
{
//deklarasi variabel
int a[10],index[10], i,j,k;
//proses penginputan data
for(i=1;i<=10;i++)
{
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();
}
· Binary search
Dalam
binary search data yang ada harus sudah terurut. Apabila data belum terurut
maka pencarian biner tidak dapat dilakukan.
Proses pencarian biner
1. Dari posisi awal = 1dan posisi akhir = n
2. Kemudian cari posisi data tengah dengan
rumus . posisi tengah= (posisi awal + posisi akhir)div2
3. Kemudian data yang dicari di bandingkan
dengan data tengah.
4. Jika sama maka data ditemukan dan proses
selesai.
5. Jika lebih kecil maka proses dilakukan
kembali tetapi posisi akhir dianggap sama dengan posisi tengah.
6. Jika lebih besar maka proses dilakuakn
kembali tetapi posisi alwal dianggap sama dengan posisi tengah.
7. Ulangi langkah tersebut hingga data
ditemukan atau tidak.
8. Pencarian data akan berakhir jika data
ditemuakn pada posisi awal lebih beasr dari posisi akhir.
Deklarasi Binary search dalam Bahasa C++
#include<iostream>
int main ()
{
int n, angka[12], kiri, kanan, tengah, temp, key;
bool ketemu = false;
cout<<"inputkan jumlah data yang anda inginka : ";
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 telah diurutkan : ";
for(int i=0; i<n; i++)
{
cout<<angka[i]<<" ";
}
cout<<"\n 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 diketahui!";
else
cout<<"Angka tidak diketahui";
return 0;
}
int main ()
{
int n, angka[12], kiri, kanan, tengah, temp, key;
bool ketemu = false;
cout<<"inputkan jumlah data yang anda inginka : ";
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 telah diurutkan : ";
for(int i=0; i<n; i++)
{
cout<<angka[i]<<" ";
}
cout<<"\n 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 diketahui!";
else
cout<<"Angka tidak diketahui";
return 0;
}
DAFTAR PUSTAKA
Sumber :
Algoritma
Pemograman Menggunakan C++
Visual
Microsoft C++ 2010
10 Langkah belajar logika dan algoritma, menggunakan bahasa C dan C++
Kumpulan lengkap syntax untuk programmer pemula menggunakan bahasa C++
0 komentar:
Posting Komentar