Meizano Ardhi M., S.T.
1. Metode Sequential Search
 Metode Sequential Search atau disebut
pencarian beruntun dapat digunakan
untuk melakukan pencarian data baik
pada array yang sudah terurut maupun
yang belum terurut.
1.1 Pencarian Pada Array Terurut
Naik
 Sebelum dilakukan pencarian, pada
program di bawah ini array diurutkan
menaik terlebih dahulu menggunakan
metode Insertion Sort.
1.1 Pencarian Pada Array yang
terurut naik
 Program Pencarian_Sequential_Search;
 Var
 I,j,n,dt,temp,ketemu,posisi: integer;
 Data: array[0..100] of integer;
 Begin
 write (‘Banyaknya elemen array = ‘);
 read(n);
 for i:=0 to n-1 do
 Begin
 write (‘Masukkan data ke-‘,i+1,’ = ‘);
 read (data[i]);
 End;
 {Pengurutan Naik dengan Insertion Sort}
 For i:=1 to n-1 do
 Begin
 temp:=data [i];
 j:=i-1;
 while ((data[j]>=temp) AND (j>0)) do
 Begin
 Data [j+1]:=data [j];
 J:=j-1;
 End;
 If (temp>=data[j] then data [j+1]:=temp
 Else
 Begin
 Data [j+1]:=data [j];
 Data [j]:=temp;
 End;
 End;
 {Pencarian Data}
 write (‘Data yang dicari = ‘);
 read (dt);
 ketemu:=0; {asumsinya data belum ditemukan}
 I:=0;
 while ((ketemu=0) AND (i<n) AND (data[i]<=dt)) do
 Begin
 if (data[i]=dt) then
 Begin
 ketemu:=1;
 posisi:=i;
 End
 Else i:=i+1;
 End;

 if (ketemu=0) then
 writeln (‘Data yang dicari tidak terdapat dalam
array’)
 Else
 Begin
 writeln (‘Setelah Pengurutan’);
 for i:=0 to n-1 do
 Begin
 Writeln (‘Data ke-‘,i+1,’ = ‘,data[i];
 End;
 Writeln(‘Data yang dicari terdapat dalam array’);
 Writeln(‘Data ditemukan pada posisi ‘,posisi+1);
 End;
 End.
Tampilan Program:
 Banyaknya elemen array = 5
 Masukkan data ke-1 = 2
 Masukkan data ke-2 = 3
 Masukkan data ke-3 = 1
 Masukkan data ke-4 = 5
 Masukkan data ke-5 = 4
 Data yang dicari = 3
 Setelah Pengurutan
 Data ke-1 = 1
 Data ke-2 = 2
 Data ke-3 = 3
 Data ke-4 = 4
 Data ke-5 = 5
 Data yang dicari terdapat dalam array
 Data ditemukan pada posisi 3
1.2 Pencarian Pada Array Terurut
Turun
 Sebelum dilakukan pencarian, pada
program di bawah ini array diurutkan
menurun terlebih dahulu menggunakan
metode Insertion Sort.
1.2 Pencarian Pada Array Terurut
Turun
 Program Pencarian_Sequential_Search;
 Var
 I,j,n,dt,temp,ketemu,posisi: integer;
 Data: array[0..100] of integer;
 Begin
 write (‘Banyaknya elemen array = ‘);
 read(n);
 for i:=0 to n-1 do
 Begin
 write (‘Masukkan
data ke-‘,i+1,’ = ‘);
 read (data[i]);
 End;
 {Pengurutan Naik dengan Insertion Sort}
 For i:=1 to n-1 do
 Begin
 temp:=data [i];
 j:=i-1;
 while
((data[j]<=temp) AND (j>0)) do

Begin

Data [j+1]:=data [j];

J:=j-1;

End;

If (temp>=data[j] then data [j+1]:=temp

Else

Begin

Data [j+1]:=data
[j];

Data [j]:=temp;

End;
 End;
 {Pencarian Data}
 write (‘Data yang dicari = ‘);
 read (dt);
 ketemu:=0; {asumsinya data belum ditemukan}
 I:=0;
 while ((ketemu=0) AND (i<n) AND (data[i]>=dt)) do
 Begin
 if (data[i]=dt) then
 Begin

ketemu:=1;

posisi:=i;
 End
 Else i:=i+1;
 End;

 if (ketemu=0) then
 writeln (‘Data yang dicari tidak terdapat dalam array’)
 Else
 Begin
 writeln (‘Setelah Pengurutan’);
 for i:=0 to n-1 do
 Begin
 Writeln (‘Data ke-
‘,i+1,’ = ‘,data[i];
 End;
 Writeln(‘Data yang dicari terdapat dalam
array’);
 Writeln(‘Data ditemukan pada posisi
‘,posisi+1);
 End;
 End.
Tampilan Program:
 Banyaknya elemen array = 5
 Masukkan data ke-1 = 2
 Masukkan data ke-2 = 3
 Masukkan data ke-3 = 1
 Masukkan data ke-4 = 5
 Masukkan data ke-5 = 4
 Data yang dicari = 3
 Setelah Pengurutan
 Data ke-1 = 5
 Data ke-2 = 4
 Data ke-3 = 3
 Data ke-4 = 2
 Data ke-5 = 1
 Data yang dicari terdapat dalam array
 Data ditemukan pada posisi 3
2. Metode Binary Search
 Metode binary search atau sering
pula dinamakan pencarian biner,
hanya digunakan untuk pencarian
data pada array yang sudah terurut.
Proses Metode Binary Search
 Proses yang terjadi pada pencarian dengan metode ini
adalah sebagai berikut:
1. Membaca array data.
2. Apabila array belum terurut maka array diurutkan
dahulu.
3. Menentukan data yang akan dicari.
4. Menentukan elemen tengah dari array.
5. Jika nilai elemen tengah sama dengan data yang dicari
maka pencarian selesai.
6. Jika nilai elemen tengah tidak sama dengan data yang
dicari maka:
a. Jika nilai elemen tengah lebih besar daripada data yang dicari
maka pencarian dilakukan pada setengah array pertama.
b. Jika nilai elemen tengah lebih kecil daripada data yang dicari
maka pencarian dilakukan pada setengah array berikutnya.
Pencarian_Binary_Search
 Program Pencarian_Binary_Search;
 Var
 I,j,indexmin,tengah,eltengah,n,dt,temp,ketemu,posisi: integer;
 Data: array[0..100] of integer;
 Begin
 write (‘Banyaknya elemen array = ‘);
 read(n);
 for i:=0 to n-1 do
 Begin
 write (‘Masukkan data ke-‘,i+1,’ = ‘);
 read (data[i]);
 End;
 {Pengurutan Naik dengan Insertion Sort}
 For i:=1 to n-1 do
 Begin
 temp:=data [i];
 j:=i-1;
 while ((data[j]>=temp) AND (j>0)) do
 Begin
 Data [j+1]:=data [j];
 J:=j-1;
 End;
 If (temp>=data[j] then data [j+1]:=temp
 Else
 Begin
 Data [j+1]:=data [j];
 Data [j]:=temp;
 End;
 End;

 {Pencarian Data}
 write (‘Data yang dicari = ‘);
 read (dt);
 ketemu:=0; {asumsinya data belum ditemukan}
 tengah:=( n div 2) +1;
 eltengah:=data[tengah];
 i:=0;
 if (dt=eltengah) then
 Begin
 ketemu:=1;
 posisi:=tengah;
 End
 Else
 Begin
 i:=0;
 while ((ketemu=0) AND (i<tengah) AND (data[i]<=dt)) do
 Begin
 if (data[i]=dt) then
 Begin
 ketemu:=1;
 posisi:=i;
 End
 Else i:=i+1;
 End;
 End
 Else
 Begin
 i:=tengah+1;
 while ((ketemu=0) AND (i<n) AND (data[i]<=dt)) do
 Begin
 if (data[i]=dt) then
 Begin
 ketemu:=1;
 posisi:=i;
 End
 Else i:=i+1;
 End;
 End;
 End;

 if (ketemu=0) then
 writeln (‘Data yang dicari tidak terdapat dalam array’)
 Else
 Begin
 writeln (‘Setelah Pengurutan’);
 for i:=0 to n-1 do
 Begin
 Writeln (‘Data ke-‘,i+1,’ = ‘,data[i];
 End;
 Writeln(‘Data yang dicari terdapat dalam array’);
 Writeln(‘Data ditemukan pada posisi ‘,posisi+1);
 End;
 End.
Tampilan Program:
 Banyaknya elemen array = 5
 Masukkan data ke-1 = 2
 Masukkan data ke-2 = 3
 Masukkan data ke-3 = 1
 Masukkan data ke-4 = 5
 Masukkan data ke-5 = 4
 Data yang dicari = 3
 Setelah Pengurutan
 Data ke-1 = 1
 Data ke-2 = 2
 Data ke-3 = 3
 Data ke-4 = 4
 Data ke-5 = 5
 Data yang dicari terdapat dalam array
 Data ditemukan pada posisi 3
 Program di atas data yang disimpan dalam array diurutkan secara menaik
menggunakan metode Insertion Sort, sama halnya bila diurutkan menurun.
Struktur data chapter_14

Struktur data chapter_14

  • 1.
  • 2.
    1. Metode SequentialSearch  Metode Sequential Search atau disebut pencarian beruntun dapat digunakan untuk melakukan pencarian data baik pada array yang sudah terurut maupun yang belum terurut.
  • 3.
    1.1 Pencarian PadaArray Terurut Naik  Sebelum dilakukan pencarian, pada program di bawah ini array diurutkan menaik terlebih dahulu menggunakan metode Insertion Sort.
  • 4.
    1.1 Pencarian PadaArray yang terurut naik  Program Pencarian_Sequential_Search;  Var  I,j,n,dt,temp,ketemu,posisi: integer;  Data: array[0..100] of integer;  Begin  write (‘Banyaknya elemen array = ‘);  read(n);  for i:=0 to n-1 do  Begin  write (‘Masukkan data ke-‘,i+1,’ = ‘);  read (data[i]);  End;  {Pengurutan Naik dengan Insertion Sort}  For i:=1 to n-1 do  Begin  temp:=data [i];  j:=i-1;  while ((data[j]>=temp) AND (j>0)) do  Begin  Data [j+1]:=data [j];  J:=j-1;  End;  If (temp>=data[j] then data [j+1]:=temp  Else  Begin  Data [j+1]:=data [j];  Data [j]:=temp;  End;  End;  {Pencarian Data}  write (‘Data yang dicari = ‘);  read (dt);  ketemu:=0; {asumsinya data belum ditemukan}  I:=0;  while ((ketemu=0) AND (i<n) AND (data[i]<=dt)) do  Begin  if (data[i]=dt) then  Begin  ketemu:=1;  posisi:=i;  End  Else i:=i+1;  End;   if (ketemu=0) then  writeln (‘Data yang dicari tidak terdapat dalam array’)  Else  Begin  writeln (‘Setelah Pengurutan’);  for i:=0 to n-1 do  Begin  Writeln (‘Data ke-‘,i+1,’ = ‘,data[i];  End;  Writeln(‘Data yang dicari terdapat dalam array’);  Writeln(‘Data ditemukan pada posisi ‘,posisi+1);  End;  End.
  • 5.
    Tampilan Program:  Banyaknyaelemen array = 5  Masukkan data ke-1 = 2  Masukkan data ke-2 = 3  Masukkan data ke-3 = 1  Masukkan data ke-4 = 5  Masukkan data ke-5 = 4  Data yang dicari = 3  Setelah Pengurutan  Data ke-1 = 1  Data ke-2 = 2  Data ke-3 = 3  Data ke-4 = 4  Data ke-5 = 5  Data yang dicari terdapat dalam array  Data ditemukan pada posisi 3
  • 6.
    1.2 Pencarian PadaArray Terurut Turun  Sebelum dilakukan pencarian, pada program di bawah ini array diurutkan menurun terlebih dahulu menggunakan metode Insertion Sort.
  • 7.
    1.2 Pencarian PadaArray Terurut Turun  Program Pencarian_Sequential_Search;  Var  I,j,n,dt,temp,ketemu,posisi: integer;  Data: array[0..100] of integer;  Begin  write (‘Banyaknya elemen array = ‘);  read(n);  for i:=0 to n-1 do  Begin  write (‘Masukkan data ke-‘,i+1,’ = ‘);  read (data[i]);  End;  {Pengurutan Naik dengan Insertion Sort}  For i:=1 to n-1 do  Begin  temp:=data [i];  j:=i-1;  while ((data[j]<=temp) AND (j>0)) do  Begin  Data [j+1]:=data [j];  J:=j-1;  End;  If (temp>=data[j] then data [j+1]:=temp  Else  Begin  Data [j+1]:=data [j];  Data [j]:=temp;  End;  End;  {Pencarian Data}  write (‘Data yang dicari = ‘);  read (dt);  ketemu:=0; {asumsinya data belum ditemukan}  I:=0;  while ((ketemu=0) AND (i<n) AND (data[i]>=dt)) do  Begin  if (data[i]=dt) then  Begin  ketemu:=1;  posisi:=i;  End  Else i:=i+1;  End;   if (ketemu=0) then  writeln (‘Data yang dicari tidak terdapat dalam array’)  Else  Begin  writeln (‘Setelah Pengurutan’);  for i:=0 to n-1 do  Begin  Writeln (‘Data ke- ‘,i+1,’ = ‘,data[i];  End;  Writeln(‘Data yang dicari terdapat dalam array’);  Writeln(‘Data ditemukan pada posisi ‘,posisi+1);  End;  End.
  • 8.
    Tampilan Program:  Banyaknyaelemen array = 5  Masukkan data ke-1 = 2  Masukkan data ke-2 = 3  Masukkan data ke-3 = 1  Masukkan data ke-4 = 5  Masukkan data ke-5 = 4  Data yang dicari = 3  Setelah Pengurutan  Data ke-1 = 5  Data ke-2 = 4  Data ke-3 = 3  Data ke-4 = 2  Data ke-5 = 1  Data yang dicari terdapat dalam array  Data ditemukan pada posisi 3
  • 9.
    2. Metode BinarySearch  Metode binary search atau sering pula dinamakan pencarian biner, hanya digunakan untuk pencarian data pada array yang sudah terurut.
  • 10.
    Proses Metode BinarySearch  Proses yang terjadi pada pencarian dengan metode ini adalah sebagai berikut: 1. Membaca array data. 2. Apabila array belum terurut maka array diurutkan dahulu. 3. Menentukan data yang akan dicari. 4. Menentukan elemen tengah dari array. 5. Jika nilai elemen tengah sama dengan data yang dicari maka pencarian selesai. 6. Jika nilai elemen tengah tidak sama dengan data yang dicari maka: a. Jika nilai elemen tengah lebih besar daripada data yang dicari maka pencarian dilakukan pada setengah array pertama. b. Jika nilai elemen tengah lebih kecil daripada data yang dicari maka pencarian dilakukan pada setengah array berikutnya.
  • 11.
    Pencarian_Binary_Search  Program Pencarian_Binary_Search; Var  I,j,indexmin,tengah,eltengah,n,dt,temp,ketemu,posisi: integer;  Data: array[0..100] of integer;  Begin  write (‘Banyaknya elemen array = ‘);  read(n);  for i:=0 to n-1 do  Begin  write (‘Masukkan data ke-‘,i+1,’ = ‘);  read (data[i]);  End;  {Pengurutan Naik dengan Insertion Sort}  For i:=1 to n-1 do  Begin  temp:=data [i];  j:=i-1;  while ((data[j]>=temp) AND (j>0)) do  Begin  Data [j+1]:=data [j];  J:=j-1;  End;  If (temp>=data[j] then data [j+1]:=temp  Else  Begin  Data [j+1]:=data [j];  Data [j]:=temp;  End;  End;   {Pencarian Data}  write (‘Data yang dicari = ‘);  read (dt);  ketemu:=0; {asumsinya data belum ditemukan}  tengah:=( n div 2) +1;  eltengah:=data[tengah];  i:=0;  if (dt=eltengah) then  Begin  ketemu:=1;  posisi:=tengah;  End  Else  Begin  i:=0;  while ((ketemu=0) AND (i<tengah) AND (data[i]<=dt)) do  Begin  if (data[i]=dt) then  Begin  ketemu:=1;  posisi:=i;  End  Else i:=i+1;  End;  End  Else  Begin  i:=tengah+1;  while ((ketemu=0) AND (i<n) AND (data[i]<=dt)) do  Begin  if (data[i]=dt) then  Begin  ketemu:=1;  posisi:=i;  End  Else i:=i+1;  End;  End;  End;   if (ketemu=0) then  writeln (‘Data yang dicari tidak terdapat dalam array’)  Else  Begin  writeln (‘Setelah Pengurutan’);  for i:=0 to n-1 do  Begin  Writeln (‘Data ke-‘,i+1,’ = ‘,data[i];  End;  Writeln(‘Data yang dicari terdapat dalam array’);  Writeln(‘Data ditemukan pada posisi ‘,posisi+1);  End;  End.
  • 12.
    Tampilan Program:  Banyaknyaelemen array = 5  Masukkan data ke-1 = 2  Masukkan data ke-2 = 3  Masukkan data ke-3 = 1  Masukkan data ke-4 = 5  Masukkan data ke-5 = 4  Data yang dicari = 3  Setelah Pengurutan  Data ke-1 = 1  Data ke-2 = 2  Data ke-3 = 3  Data ke-4 = 4  Data ke-5 = 5  Data yang dicari terdapat dalam array  Data ditemukan pada posisi 3  Program di atas data yang disimpan dalam array diurutkan secara menaik menggunakan metode Insertion Sort, sama halnya bila diurutkan menurun.