Sesi09 10 Seaching Sorting

6
11/11/2010 1 Searching & Sorting Searching & Sorting Pertemuan Pertemuan 9-10 10 Dosen Dosen Pembina Pembina Danang Danang Junaedi Junaedi Jurusan Teknik Informatika IX/XII - 2 Universitas Widyatama TUJUAN MATERI TUJUAN MATERI Setelah Setelah mengikuti mengikuti materi materi pertemuan pertemuan ini, ini, mahasiswa mahasiswa diharapkan diharapkan dapat dapat 1. 1. Menjelaskan enjelaskan dan dan menggunakan menggunakan metode metode pencarian pencarian dalam dalam menyelesaikan menyelesaikan masalah masalah pencarian pencarian data/informasi data/informasi pada pada Kondisi ondisi data data yang yang tidak tidak terurut terurut Kondisi Kondisi data data terurut terurut 2. 2. Menjelaskan enjelaskan dan dan menggunakan menggunakan metode metode untuk untuk mengurutkan mengurutkan data/informasi data/informasi dalam dalam menyelesaikan menyelesaikan masalah masalah pegurutan pegurutan data/informasi data/informasi Tujuan Tujuan Jurusan Teknik Informatika IX/XII - 3 Universitas Widyatama 1. 1. Pencarian pada Data yang Tidak Terurut Pencarian pada Data yang Tidak Terurut a. a. Sequential dengan variabel logika Sequential dengan variabel logika b. b. Sequential tanpa variabel logika Sequential tanpa variabel logika c. c. Sentinel Sentinel 2. 2. Pencarian pada Data yang Terurut Pencarian pada Data yang Terurut a. a. Sequential tanpa variabel logika Sequential tanpa variabel logika b. b. Binary search/dikotomik Binary search/dikotomik 3. 3. Sorting Sorting a. a. Bubble Sort Bubble Sort b. b. Selection Sort Selection Sort c. c. Insertion Sort Insertion Sort Lingkup Materi Lingkup Materi Jurusan Teknik Informatika IX/XII - 4 Universitas Widyatama Searching (1) Searching (1) Tujuan : mencari suatu nilai/elemen dalam Tujuan : mencari suatu nilai/elemen dalam kumpulan nilai (yang disimpan dalam array, list kumpulan nilai (yang disimpan dalam array, list atau file) yang sudah diketahui atau file) yang sudah diketahui Jenis Jenis Searching pada Data Tidak Terurut Searching pada Data Tidak Terurut Sequential Search Sequential Search Searching pada Data Terurut Searching pada Data Terurut Sequential Search Sequential Search Binary Search/Pencarian Bagi Dua/ Dikotomik Search Binary Search/Pencarian Bagi Dua/ Dikotomik Search Jurusan Teknik Informatika IX/XII - 5 Universitas Widyatama SEQUENTIAL SEARCH Pencarian pada Data yang Tidak Terurut Disini proses pencarian dilakukan secara beruntun dari data pertama sampai data terakhir. Pencarian pada Data yang Terurut Disini proses pencarian dapat dilakukan secara berurutan dari data pertama sampai data terakhir atau tidak berurutan. Masalah : Diketahui sebuah array A[1..10] yang berisi data integer dengan kondisi tidak terurut. Buat algoritma untuk mencari nilai X dan beri pesan ditemukan atau tidak nilai tersebut Jurusan Teknik Informatika IX/XII - 6 Universitas Widyatama Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut 5 10 10 11 11 2 8 13 13 7 20 20 35 35 18 18 Misalnya, terdapat sebuah array seperti di atas Keadaan awal : I 1 Pencarian dilakukan sampai dengan posisi akhir pada array atau data ditemukan Keadaan Akhir : I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu

description

searching sorting strukture data

Transcript of Sesi09 10 Seaching Sorting

  • 11/11/2010

    1

    Searching & SortingSearching & Sorting

    PertemuanPertemuan 99--1010

    DosenDosen PembinaPembinaDanangDanang JunaediJunaedi

    Jurusan Teknik Informatika IX/XII - 2 Universitas Widyatama

    TUJUAN MATERITUJUAN MATERISetelahSetelah mengikutimengikuti materimateri pertemuanpertemuan ini,ini, mahasiswamahasiswadiharapkandiharapkan dapatdapat

    1.1. MMenjelaskanenjelaskan dandan menggunakanmenggunakan metodemetode pencarianpencariandalamdalam menyelesaikanmenyelesaikan masalahmasalah pencarianpencariandata/informasidata/informasi padapada

    KKondisiondisi datadata yangyang tidaktidak terurutterurut KondisiKondisi datadata terurutterurut

    2.2. MMenjelaskanenjelaskan dandan menggunakanmenggunakan metodemetode untukuntuk mengurutkanmengurutkandata/informasidata/informasi dalamdalam menyelesaikanmenyelesaikan masalahmasalah pegurutanpegurutandata/informasidata/informasi

    TujuanTujuan

    Jurusan Teknik Informatika IX/XII - 3 Universitas Widyatama

    1.1. Pencarian pada Data yang Tidak Terurut Pencarian pada Data yang Tidak Terurut a.a. Sequential dengan variabel logikaSequential dengan variabel logikab.b. Sequential tanpa variabel logikaSequential tanpa variabel logikac.c. SentinelSentinel

    2.2. Pencarian pada Data yang Terurut Pencarian pada Data yang Terurut a.a. Sequential tanpa variabel logikaSequential tanpa variabel logikab.b. Binary search/dikotomikBinary search/dikotomik

    3.3. SortingSortinga.a. Bubble Sort Bubble Sort b.b. Selection SortSelection Sortc.c. Insertion SortInsertion Sort

    Lingkup Materi Lingkup Materi

    Jurusan Teknik Informatika IX/XII - 4 Universitas Widyatama

    Searching (1)Searching (1) Tujuan : mencari suatu nilai/elemen dalam Tujuan : mencari suatu nilai/elemen dalam

    kumpulan nilai (yang disimpan dalam array, list kumpulan nilai (yang disimpan dalam array, list atau file) yang sudah diketahuiatau file) yang sudah diketahui

    JenisJenis Searching pada Data Tidak TerurutSearching pada Data Tidak Terurut

    Sequential SearchSequential Search Searching pada Data TerurutSearching pada Data Terurut

    Sequential SearchSequential Search Binary Search/Pencarian Bagi Dua/ Dikotomik SearchBinary Search/Pencarian Bagi Dua/ Dikotomik Search

    Jurusan Teknik Informatika IX/XII - 5 Universitas Widyatama

    SEQUENTIAL SEARCHPencarian pada Data yang Tidak TerurutDisini proses pencarian dilakukan secara beruntun dari datapertama sampai data terakhir.Pencarian pada Data yang Terurut Disini proses pencarian dapat dilakukan secara berurutan dari data pertama sampai data terakhir atau tidak berurutan.

    Masalah :Diketahui sebuah array A[1..10] yang berisi data integer dengankondisi tidak terurut. Buat algoritma untuk mencari nilai X dan beripesan ditemukan atau tidak nilai tersebut

    Jurusan Teknik Informatika IX/XII - 6 Universitas Widyatama

    Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

    55 1010 1111 22 88 1313 77 2020 3535 1818

    Misalnya, terdapat sebuah array seperti di atas Keadaan awal : I 1 Pencarian dilakukan sampai dengan posisi akhir pada array atau

    data ditemukan Keadaan Akhir :

    I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu

  • 11/11/2010

    2

    Jurusan Teknik Informatika IX/XII - 7 Universitas Widyatama

    Sequential Search (Tanpa Variabel Logika) untukkondisi data tidak terurutJudul : Algoritma untuk mencari bilangan XKamus : ARRAY A[1..10] = array yang menampung data

    dalam tabelI = integer, counter pengulangan

    X = integer, variabel yang menampung data yang akandicari

    Algoritma :INPUT X, I 1WHILE (I < 10) AND ( A[I] X)DO

    I I + 1END WHILEIF A[I] = X THEN

    OUTPUT Ditemukan di elemen ke-,IELSE

    OUTPUT Tidak ditemukanEND IF

    Jurusan Teknik Informatika IX/XII - 8 Universitas Widyatama

    Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut

    Misalnya, terdapat sebuah array seperti di atas Keadaan awal : I 1 Pencarian dilakukan selama nilai dalam array < nilai yang dicari Keadaan Akhir :

    I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu

    22 55 77 88 1010 1111 1313 1818 2020 3535

    Jurusan Teknik Informatika IX/XII - 9 Universitas Widyatama

    Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut

    Misalnya, terdapat sebuah array seperti di atas Keadaan awal : I 1 Pencarian dilakukan selama nilai dalam array < nilai yang dicari Keadaan Akhir :

    I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu

    22 55 77 88 1010 1111 1313 1818 2020 3535

    Jurusan Teknik Informatika IX/XII - 10 Universitas Widyatama

    Sequential Search (Tanpa Variabel Logika) untuk kondisi data terurut

    Judul : Algoritma untuk mencari nilai XKamus : ARRAY A[1..10] = array yang menampung data

    I = integer, counter pengulanganX = integer, variabel yang menampung data yang akan dicari

    Algoritma :INPUT X, I 1WHILE (A[I] < X) and (I

  • 11/11/2010

    3

    Jurusan Teknik Informatika IX/XII - 13 Universitas Widyatama

    Sequential Search (Dengan Variabel Logika) untuk kondisi data tidak terurutJudul : Algoritma untuk mencari bilangan XKamus : ARRAY A[1..10] = array yang menampung data dalam tabel

    I = integer, counter pengulanganX = integer, variabel yang menampung data yang akan dicariFound = boolean, variabel logika untuk mengetahui ketemu/tidak nilai

    yang akan dicariAlgoritma :INPUT X, I 1, Found FalseWHILE (I

  • 11/11/2010

    4

    Jurusan Teknik Informatika IX/XII - 19 Universitas Widyatama

    Sequential Search (Sentinel) untuk kondisi data terurut

    22 55 77 88 1010 1111 1313 1818 2020 3535

    Misalnya, terdapat sebuah array seperti di atas Keadaan awal : I 1 Pencarian dilakukan selama nilai dalam array < nilai pada posisi

    sentinel. Jika menggunakan sentinel di awal pencarian dilakukan dari posisi paling belakang ke depan, sebaliknya jika menggunakan sentinel di akhir pencarian dilakukan dari depan ke belakang

    Keadaan Akhir : I akan diisi nomor indeks yang array-nya bernilai X, namun apabila Ibukan sentinel berarti nilai X ditemukan

    Sentinel di awal Sentinel di akhir

    Jurusan Teknik Informatika IX/XII - 20 Universitas Widyatama

    Sequential Search (Sentinel) untuk kondisi data terurut{Sentinel adalah elemen fiktif yang dipasang setelah elemen terakhir atau di awal table}Judul : Algoritma untuk mencari bilangan XKamus : ARRAY A[1..11] = array yang menampung data dalam tabel

    I = integer, counter pengulanganX = integer, variabel yang menampung data yang akan dicari

    Found = boolean, variabel logikaAlgoritma :INPUT X, I 1, A[11] X {Sentinel di akhir}WHILEA[I] < A[11] DO

    I I + 1END WHILEIF I 11 THEN

    OUTPUT Ditemukan di elemen ke-,IELSE

    OUTPUT Tidak ketemuEND IF

    Jurusan Teknik Informatika IX/XII - 21 Universitas Widyatama

    Searching (2)Searching (2) Sequential Search Sequential Search Dengan Sentinel di awalDengan Sentinel di awal

    Data Tidak TerurutData Tidak Terurut Data TerurutData Teruruti = N;i = N;j=0;j=0;scanf(%d,&Barang[j]);scanf(%d,&Barang[j]);while (i >= 1 && Barang[i] != while (i >= 1 && Barang[i] != Barang[j])Barang[j]){ i{ i-- --; }; }(i >= 1) ? printf("Barang (i >= 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan") :printf("Barang tidak ditemukan");ditemukan");

    i = N;i = N;j=0;j=0;scanf(%d,&Barang[j]);scanf(%d,&Barang[j]);while (i >= 1 && Barang[i] < while (i >= 1 && Barang[i] < Barang[j])Barang[j]){ i{ i-- --; }; }(i >= 1) ? printf("Barang (i >= 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan") :printf("Barang tidak ditemukan");ditemukan");

    Jurusan Teknik Informatika IX/XII - 22 Universitas Widyatama

    Binary Search (Pencarian Bagi Dua)

    Merupakan metode pencarian yang diterapkan pada kumpulandata yang telah terurut (terurut menaik atau terurut menurun),yang merupakan syarat mutlak dari proses pencarian yangmenggunakan metode ini. Pencarian dilakukan denganmembagi dua larik yang sudah terurut, hal ini dilakukan sampaidata tersebut ditemukan (nilai yang dicari adalah nilai yang ditengah)Ilustrasi metode Binary Search :

    Terdapat suatu larik A yang sudah terurut, dan akandicari suatu nilai tertentu pada larik tersebut, misalnyanilai X.

    Jurusan Teknik Informatika IX/XII - 23 Universitas Widyatama

    Binary Search (Pencarian Bagi Dua

    Merupakan metode pencarian yang diterapkanpada kumpulan data yang telah terurut (terurutmenaik atau terurut menurun), yangmerupakan syarat mutlak dari prosespencarian yang menggunakan metode ini.Pencarian dilakukan dengan membagi dua larikyang sudah terurut, hal ini dilakukan sampaidata tersebut ditemukan (nilai yang dicariadalah nilai yang di tengah)

    Jurusan Teknik Informatika IX/XII - 24 Universitas Widyatama

    Ilustrasi metode Binary Search Terdapat suatu larik A yang sudah terurut, dan

    akan dicari suatu nilai tertentu pada larik tersebut, misalnya nilai X

    Langkah pertama : bagi dua larik A, yaitu : Tengah = (Kiri + Kanan)/2 Langkah kedua : bandingkan data yang dicari

    (misal : X) dengan data larik A[Tengah] Jika X = A[Tengan], pencarian dihentikan (ketemu). Jika X > A[T], pencarian dilakukan pada posisi sebelah kanan.

    Ubah nilai Kiri menjadi nilai Tengah (Kiri = Tengah), ulangi langkah pertama sampai data ditemukan

    Jika X < A[T], pencarian dilakukan pada posisi sebelah kiri. Ubah nilai Kanan menjadi nilai Tengah (Kanan =Tengah), ulangi langkah pertama sampai data ditemukan

  • 11/11/2010

    5

    Jurusan Teknik Informatika IX/XII - 25 Universitas Widyatama

    Searching (3)Searching (3) Binary SearchBinary Search

    kiri = 0;kiri = 0;kanan = Nkanan = N--1;1;ketemu = 0;ketemu = 0;while (kiri < kanan && ketemu == 0)while (kiri < kanan && ketemu == 0){ {

    tengah = (kiri + kanan) / 2;tengah = (kiri + kanan) / 2;if (Barang[tengah] == Cari) ketemu = 1;if (Barang[tengah] == Cari) ketemu = 1;elseelse{ {

    (Barang[tengah]< Cari) ? kiri = tengah + 1 :kanan = tengah (Barang[tengah]< Cari) ? kiri = tengah + 1 :kanan = tengah -- 1;1;}}

    }}(ketemu == 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");(ketemu == 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");

    Jurusan Teknik Informatika IX/XII - 26 Universitas Widyatama

    SORTING (PENGURUTAN)DEFINISI PENGURUTAN

    Pengurutan (Sorting) adalah suatu proses untuk mengatur sekumpulandata atau objek menurut susunan atau urutan tertentu. Dibedakanmenjadi 2 macam, yaitu :

    Pengurutan Internal yaitu pengurutan terhadap sekumpulan datayang disimpan dalam media internal komputer, yang dapat diaksessetiap elemennya secara langsung dan disebut juga sebagaipengurutan tabel.

    Pengurutan Eksternal, yaitu pengurutan data yang disimpan dalammemori sekunder, biasanya data berukuran besar sehingga tidakmampu untuk dimuat semuanya dalam memori komputer disebutjuga pengurutan arsip (file).

    Jurusan Teknik Informatika IX/XII - 27 Universitas Widyatama

    Sorting (1)Sorting (1) Tujuan : menyusun nilai/elemen (biasanya Tujuan : menyusun nilai/elemen (biasanya

    dalam array atau file) sedemikian rupa dalam array atau file) sedemikian rupa berdasarkan aturan tertentu berdasarkan aturan tertentu ((ascending/descendingascending/descending))

    JenisJenis Internal SortingInternal Sorting

    Selection SortSelection Sort Bubble SortBubble Sort Insertion SortInsertion Sort

    Eksternal SortingEksternal Sorting

    Jurusan Teknik Informatika IX/XII - 28 Universitas Widyatama

    Maksimum-minimum Sort (Selection Sort)

    Didasarkan pada pemilihan elemen maksimum atau minimumlarik sebagai basis pengurutan. Gagasannya adalah memilihelemen maksimum/minimum tersebut dengan elemen terujunglarik (ujung kiri atau ujung kanan). Selanjutnya elemen terujungtersebut di-isolasi dan tidak disertakan pada proses selanjutnya.Proses yang sama diulang untuk elemen larik yang tersisasampai larik terurut.

    Jurusan Teknik Informatika IX/XII - 29 Universitas Widyatama

    Maksimum Sort :

    Ilustrasi Pengurutan : Secara Ascending(terurut dari kecil ke besar)

    65 20 5 30 85 40 data asal65 20 5 30 40 85 langkah 140 20 5 30 65 85 langkah 230 20 5 40 65 85 langkah 35 20 30 40 65 85 langkah 45 20 30 40 65 85 langkah 5

    Jurusan Teknik Informatika IX/XII - 30 Universitas Widyatama

    Ilustrasi pengurutan : Secara Descending (terurut dari besar ke kecil)

    65 20 5 30 85 40 data asal85 20 5 30 65 40 langkah 185 65 5 30 20 40 langkah 285 65 40 30 20 5 langkah 385 65 40 30 20 5 langkah 485 65 40 30 20 5 langkah 5

    dan sebaliknya dapat dilakukan untuk Mimimum Sort [Coba lakukan!]

  • 11/11/2010

    6

    Jurusan Teknik Informatika IX/XII - 31 Universitas Widyatama

    Sorting (2)Sorting (2) Selection Sort Selection Sort menggunakan nilai minimummenggunakan nilai minimum

    for(i=0;i