Tujuan:
Mempelajari bagaimana mengatur sekumpulan
data berdasar pada pengurutan dan pencarian




                 STRUKTUR DATA
Pengurutan adalah upaya mengatur
sekumpulan data berdasar pada urutan
         (naik atau turun)



         Pencarian adalah upaya
mencari/mendapatkan satu atau lebih objek
         dari sekumpulan data




                 STRUKTUR DATA
Sorting
Pengurutan data dalam struktur data sangat
penting untuk data yang beripe data numerik
ataupun karakter.
Pengurutan dapat dilakukan secara ascending
(urut naik) dan descending (urut turun)
Pengurutan (Sorting) adalah proses menyusun
kembali data yang sebelumnya telah disusun
dengan suatu pola tertentu, sehingga tersusun
secara teratur menurut aturan tertentu.
Contoh:
Data Acak    : 5 6 8 1 3 25 10
Ascending    : 1 3 5 6 8 10 25
Descending   : 25 10 8 6 5 3 1
                             STRUKTUR DATA
6 (enam) metode pengurutan
              yang akan dipaparkan


Penyisipan Langsung (Straight Insertion Sort)

Penyisipan Biner (Binary Insertion Sort)

Seleksi (Selection Sort)
Gelembung (Bubble Sort)

Shell (Shell Sort)

Quick (Quick Sort)


                     STRUKTUR DATA
2 (dua) metode pencarian
        yang akan dipaparkan




    Pencarian                  Pencarian
    Sekuensial                   Biner
(Sequential Search)             (Binary
                                Search)


               STRUKTUR DATA
Algoritma pengurutan adalah algoritma untuk meletakkan
  kumpulan elemen data ke dalam urutan tertentu,
  berdasarkan satu atau beberapa kunci dalam tiap–tiap
                                                    –
  elemen

  2 (dua) model urutan yaitu model urut naik (increase sort)
  dan urut turun (decrease sort).


                 Contoh: Data 5,2,4,6.



 Diurut naik menjadi 2,4,5,6     Diurut turun menjadi 6,5,4,2.


(Mengapa perlu             Pengurutan dilakukan agar data
 pengurutan?)              dapat dilihat dengan mudah.

                         STRUKTUR DATA
Bubble Sort
Metode sorting termudah
Diberi nama “Bubble” karena proses pengurutan
secara berangsur-angsur bergerak/berpindah ke
posisinya yang tepat, seperti gelembung yang
keluar dari sebuah gelas bersoda.
Bubble Sort mengurutkan data dengan cara
membandingkan elemen sekarang dengan
elemen berikutnya.


                  STRUKTUR DATA
Bubble Sort (2)
Pengurutan Ascending :Jika elemen sekarang lebih
besar dari elemen berikutnya maka kedua elemen
tersebut ditukar.
Pengurutan Descending: Jika elemen sekarang lebih
kecil dari elemen berikutnya, maka kedua elemen
tersebut ditukar.
Algoritma ini seolah-olah menggeser satu per satu
elemen dari kanan ke kiri atau kiri ke kanan,
tergantung jenis pengurutannya.
Ketika satu proses telah selesai, maka bubble sort
akan mengulangi proses, demikian seterusnya dari 0
sampai dengan iterasi sebanyak n-1.
Kapan berhentinya? Bubble sort berhenti jika seluruh
array telah diperiksa dan tidak ada pertukaran lagi
yang bisa dilakukan, serta tercapai perurutan yang
telah diinginkan.
                    STRUKTUR DATA
Bubble Sort (3)




    STRUKTUR DATA
Bubble Sort (4)




    STRUKTUR DATA
Bubble Sort (5)




    STRUKTUR DATA
Bubble Sort (6)
Dengan prosedur diatas, data terurut naik
(ascending), untuk urut turun (descending)
silahkan ubah bagian:
if (data[j]<data[j-1]) tukar(&data[j],&data[j-1]);

Menjadi:
if (data[j]>data[j-1]) tukar(&data[j],&data[j-1]);

“The bubble sort is an easy algorithm to program,
but it is slower than many other sorts”


                    STRUKTUR DATA
Selection Sort
Merupakan kombinasi antara sorting dan searching

Untuk setiap proses, akan dicari elemen-elemen yang
belum diurutkan yang memiliki nilai terkecil atau terbesar
akan dipertukarkan ke posisi yang tepat di dalam array.

Misalnya untuk putaran pertama, akan dicari data dengan
nilai terkecil dan data ini akan ditempatkan di indeks
terkecil (data[0]), pada putaran kedua akan dicari data
kedua terkecil, dan akan ditempatkan di indeks kedua
(data[1]).

Selama proses, pembandingan dan pengubahan hanya
dilakukan pada indeks pembanding saja, pertukaran data
secara fisik terjadi pada akhir proses.
                       STRUKTUR DATA
Selection Sort (2)




     STRUKTUR DATA
Insertion Sort

Mirip dengan cara orang mengurutkan kartu,
selembar demi selembar kartu diambil dan
disisipkan (insert) ke tempat yang seharusnya.
Pengurutan dimulai dari data ke-2 sampai dengan
data terakhir, jika ditemukan data yang lebih
kecil, maka akan ditempatkan (diinsert) diposisi
yang seharusnya.
Pada penyisipan elemen, maka elemen-elemen
lain akan bergeser ke belakang

                  STRUKTUR DATA
Insertion Sort (2)




     STRUKTUR DATA
Insertion Sort (3)




      STRUKTUR DATA
Perbandingan
Tabel Perbandingan Kecepatan Metode
Pengurutan Data
Untuk data sejumlah 10.000 data pada
komputer Pentium II 450 MHz




               STRUKTUR DATA
Soal
Carilah 3 metode sorting lainnya dan
tuliskan dalam paper beserta source code,
cara dan analisis dan tiap-tiap metode
sorting yang ada!




                  STRUKTUR DATA
Implementasi Algoritma Rekursi1_Faktorial
                dalam pascal

Program Rekursi1_Faktorial;
uses crt, dos;

Var   n_faktorial,x : longint;

Function faktorial (n: longint) : longint;
Begin
   if (n = 0) or (n = 1) then
     faktorial := 1
   else
     faktorial := n * faktorial ( n - 1);
End;
Begin
  Writeln('Masukan bilangan n yang anda inginkan');
  Readln (x);
  n_faktorial := Factorial(x);
  Writeln (x, '! adalah ', n_faktorial);
End.

                     STRUKTUR DATA
Contoh Pemakaian Rekursi (Permutasi).
Untuk menampilkan semua permutasi dari N karakter ’A’, ’B’, ’C’, dan
seterusnya, diperlukan rekursi karena proses permutasi akan
menampilkan karakter yang sama secara berulang.

Contoh : Permutasi untuk n = 2 adalah :
                A       B
                B       A

Contoh : Permutasi untuk n = 3 adalah :
                A       B        C
                A       C        B
                B       A        C
                B       C        A
                C       A        B
                C       B        A

                            STRUKTUR DATA
Prosedur DoPermutasi

Procedure DoPermutasi (Input/Output A: TPermutasi ;
                              mulai :byte)
{prosedur untuk mengerjakan hitungan permutasi untuk n objek}
{K.Awal : sebuah nilai n diberikan untuk menyatakan banyaknya objek}
{K.Akhir: Susunan huruf alphabet sebagai permutasi dari n objek dan
          dicetak ke piranti keluaran}

DEKLARASI
 i    : byte;
 Temp : char;




                             STRUKTUR DATA
DESKRIPSI:

If ( mulai = N ) then
     For i    1 to N do
           write ( A [ i ] )
     Endfor
     Else
         For i    mulai to N do
             temp           A [ i ]
             A [ i ]        A [ mulai ]
             A [ mulai ]    temp
             DoPermutasi (A, mulai +1)
           Endfor
     Endelse
Endif




                    STRUKTUR DATA
Contoh :
 Algoritma Permutasi yang memanggil prosedur bernama DoPermutasi.


Algoritma Permutasi
{Algoritma program utama menentukan permutasi dari n obejk}
{K.Awal : nilai n yang menyatakan banyak objek berupa huruf aplhabet
          sudah terdefinisi}
{K.Akhir: susunan permutasi yang mungkin dari n objek berupa huruf
          alphabet dan dicetak ke piranti keluaran}

DEKLARASI

Const Max = 10
Type TPermutasi = array [ 1..10 ] of char

Procedure DoPermutasi (Input/Output A: TPermutasi ;
                       mulai :byte)
{prosedur dengan parameter formal input/output}


                                 STRUKTUR DATA
DESKRIPSI:

     If ( mulai = N ) then
               for i ← 1 to N do
                 write ( A [ i ] )
              endfor
     else
        for i ← mulai to N do
           temp ← A [ i ]
           A[i]        ← A [ mulai ]
           A [ mulai ] ← temp
           DoPermutasi (A, mulai +1)
         endfor
     endif




                        STRUKTUR DATA

11 12 -pengurutan dan-pencarian

  • 1.
    Tujuan: Mempelajari bagaimana mengatursekumpulan data berdasar pada pengurutan dan pencarian STRUKTUR DATA
  • 2.
    Pengurutan adalah upayamengatur sekumpulan data berdasar pada urutan (naik atau turun) Pencarian adalah upaya mencari/mendapatkan satu atau lebih objek dari sekumpulan data STRUKTUR DATA
  • 3.
    Sorting Pengurutan data dalamstruktur data sangat penting untuk data yang beripe data numerik ataupun karakter. Pengurutan dapat dilakukan secara ascending (urut naik) dan descending (urut turun) Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu. Contoh: Data Acak : 5 6 8 1 3 25 10 Ascending : 1 3 5 6 8 10 25 Descending : 25 10 8 6 5 3 1 STRUKTUR DATA
  • 4.
    6 (enam) metodepengurutan yang akan dipaparkan Penyisipan Langsung (Straight Insertion Sort) Penyisipan Biner (Binary Insertion Sort) Seleksi (Selection Sort) Gelembung (Bubble Sort) Shell (Shell Sort) Quick (Quick Sort) STRUKTUR DATA
  • 5.
    2 (dua) metodepencarian yang akan dipaparkan Pencarian Pencarian Sekuensial Biner (Sequential Search) (Binary Search) STRUKTUR DATA
  • 6.
    Algoritma pengurutan adalahalgoritma untuk meletakkan kumpulan elemen data ke dalam urutan tertentu, berdasarkan satu atau beberapa kunci dalam tiap–tiap – elemen 2 (dua) model urutan yaitu model urut naik (increase sort) dan urut turun (decrease sort). Contoh: Data 5,2,4,6. Diurut naik menjadi 2,4,5,6 Diurut turun menjadi 6,5,4,2. (Mengapa perlu Pengurutan dilakukan agar data pengurutan?) dapat dilihat dengan mudah. STRUKTUR DATA
  • 7.
    Bubble Sort Metode sortingtermudah Diberi nama “Bubble” karena proses pengurutan secara berangsur-angsur bergerak/berpindah ke posisinya yang tepat, seperti gelembung yang keluar dari sebuah gelas bersoda. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya. STRUKTUR DATA
  • 8.
    Bubble Sort (2) PengurutanAscending :Jika elemen sekarang lebih besar dari elemen berikutnya maka kedua elemen tersebut ditukar. Pengurutan Descending: Jika elemen sekarang lebih kecil dari elemen berikutnya, maka kedua elemen tersebut ditukar. Algoritma ini seolah-olah menggeser satu per satu elemen dari kanan ke kiri atau kiri ke kanan, tergantung jenis pengurutannya. Ketika satu proses telah selesai, maka bubble sort akan mengulangi proses, demikian seterusnya dari 0 sampai dengan iterasi sebanyak n-1. Kapan berhentinya? Bubble sort berhenti jika seluruh array telah diperiksa dan tidak ada pertukaran lagi yang bisa dilakukan, serta tercapai perurutan yang telah diinginkan. STRUKTUR DATA
  • 9.
    Bubble Sort (3) STRUKTUR DATA
  • 10.
    Bubble Sort (4) STRUKTUR DATA
  • 11.
    Bubble Sort (5) STRUKTUR DATA
  • 12.
    Bubble Sort (6) Denganprosedur diatas, data terurut naik (ascending), untuk urut turun (descending) silahkan ubah bagian: if (data[j]<data[j-1]) tukar(&data[j],&data[j-1]); Menjadi: if (data[j]>data[j-1]) tukar(&data[j],&data[j-1]); “The bubble sort is an easy algorithm to program, but it is slower than many other sorts” STRUKTUR DATA
  • 13.
    Selection Sort Merupakan kombinasiantara sorting dan searching Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil, dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses. STRUKTUR DATA
  • 14.
    Selection Sort (2) STRUKTUR DATA
  • 15.
    Insertion Sort Mirip dengancara orang mengurutkan kartu, selembar demi selembar kartu diambil dan disisipkan (insert) ke tempat yang seharusnya. Pengurutan dimulai dari data ke-2 sampai dengan data terakhir, jika ditemukan data yang lebih kecil, maka akan ditempatkan (diinsert) diposisi yang seharusnya. Pada penyisipan elemen, maka elemen-elemen lain akan bergeser ke belakang STRUKTUR DATA
  • 16.
    Insertion Sort (2) STRUKTUR DATA
  • 17.
    Insertion Sort (3) STRUKTUR DATA
  • 18.
    Perbandingan Tabel Perbandingan KecepatanMetode Pengurutan Data Untuk data sejumlah 10.000 data pada komputer Pentium II 450 MHz STRUKTUR DATA
  • 19.
    Soal Carilah 3 metodesorting lainnya dan tuliskan dalam paper beserta source code, cara dan analisis dan tiap-tiap metode sorting yang ada! STRUKTUR DATA
  • 20.
    Implementasi Algoritma Rekursi1_Faktorial dalam pascal Program Rekursi1_Faktorial; uses crt, dos; Var n_faktorial,x : longint; Function faktorial (n: longint) : longint; Begin if (n = 0) or (n = 1) then faktorial := 1 else faktorial := n * faktorial ( n - 1); End; Begin Writeln('Masukan bilangan n yang anda inginkan'); Readln (x); n_faktorial := Factorial(x); Writeln (x, '! adalah ', n_faktorial); End. STRUKTUR DATA
  • 21.
    Contoh Pemakaian Rekursi(Permutasi). Untuk menampilkan semua permutasi dari N karakter ’A’, ’B’, ’C’, dan seterusnya, diperlukan rekursi karena proses permutasi akan menampilkan karakter yang sama secara berulang. Contoh : Permutasi untuk n = 2 adalah : A B B A Contoh : Permutasi untuk n = 3 adalah : A B C A C B B A C B C A C A B C B A STRUKTUR DATA
  • 22.
    Prosedur DoPermutasi Procedure DoPermutasi(Input/Output A: TPermutasi ; mulai :byte) {prosedur untuk mengerjakan hitungan permutasi untuk n objek} {K.Awal : sebuah nilai n diberikan untuk menyatakan banyaknya objek} {K.Akhir: Susunan huruf alphabet sebagai permutasi dari n objek dan dicetak ke piranti keluaran} DEKLARASI i : byte; Temp : char; STRUKTUR DATA
  • 23.
    DESKRIPSI: If ( mulai= N ) then For i 1 to N do write ( A [ i ] ) Endfor Else For i mulai to N do temp A [ i ] A [ i ] A [ mulai ] A [ mulai ] temp DoPermutasi (A, mulai +1) Endfor Endelse Endif STRUKTUR DATA
  • 24.
    Contoh : AlgoritmaPermutasi yang memanggil prosedur bernama DoPermutasi. Algoritma Permutasi {Algoritma program utama menentukan permutasi dari n obejk} {K.Awal : nilai n yang menyatakan banyak objek berupa huruf aplhabet sudah terdefinisi} {K.Akhir: susunan permutasi yang mungkin dari n objek berupa huruf alphabet dan dicetak ke piranti keluaran} DEKLARASI Const Max = 10 Type TPermutasi = array [ 1..10 ] of char Procedure DoPermutasi (Input/Output A: TPermutasi ; mulai :byte) {prosedur dengan parameter formal input/output} STRUKTUR DATA
  • 25.
    DESKRIPSI: If ( mulai = N ) then for i ← 1 to N do write ( A [ i ] ) endfor else for i ← mulai to N do temp ← A [ i ] A[i] ← A [ mulai ] A [ mulai ] ← temp DoPermutasi (A, mulai +1) endfor endif STRUKTUR DATA