Sesi09 10 Seaching Sorting
-
Upload
ihsan-muftiyandi -
Category
Documents
-
view
7 -
download
0
description
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