Professional Documents
Culture Documents
Tujuan
TUJUAN MATERI Setelah mengikuti materi pertemuan ini, mahasiswa diharapkan dapat
1.
Menjelaskan dan menggunakan metode pencarian dalam menyelesaikan masalah pencarian data/informasi pada
Kondisi data yang tidak terurut Kondisi data terurut
2.
Menjelaskan dan menggunakan metode untuk mengurutkan data/informasi dalam menyelesaikan masalah pegurutan data/informasi
IX/XII - 2 Universitas Widyatama
Lingkup Materi
1.
a. b. c.
Searching (1)
Tujuan : mencari suatu nilai/elemen dalam kumpulan nilai (yang disimpan dalam array, list atau file) yang sudah diketahui Jenis
Searching pada Data Tidak Terurut
Sequential Search
2.
Sequential tanpa variabel logika Binary search/dikotomik Bubble Sort Selection Sort Insertion Sort
3.
Sorting
a. b. c.
IX/XII - 3
Universitas Widyatama
IX/XII - 4
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
Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut
5 10 11 2 8
13 7
20 35 18
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
IX/XII - 5
Universitas Widyatama
IX/XII - 6
Universitas Widyatama
11/11/2010
Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut
: Algoritma untuk mencari bilangan X : ARRAY A[1..10] = array yang menampung data dalam tabel I = integer, counter pengulangan X = integer, variabel yang menampung data yang akan dicari Algoritma : INPUT X, I 1 WHILE (I < 10) AND ( A[I] <> X) DO I I+1 END WHILE IF A[I] = X THEN OUTPUT Ditemukan di elemen ke-,I ELSE OUTPUT Tidak ditemukan END IF
Jurusan Teknik Informatika IX/XII - 7 Universitas Widyatama
Judul Kamus
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
IX/XII - 8
Universitas Widyatama
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
IX/XII - 9
Universitas Widyatama
Searching (2)
Sequential Search Tanpa Variabel Logika
Data Terurut scanf(%d,&Cari); i = 1; while (i <= N && Cari < Barang[i]) { i++; } (Barang[i] == Cari) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan"); Data Tidak Terurut scanf(%d,&Cari); i = 1; while (i <= N && Cari != Barang[i]) { i++; } (i < N) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan");
Sequential Search (Dengan Variabel Logika) untuk kondisi data tidak terurut 5
10
11
13
20
35
18
Misalnya, terdapat sebuah array seperti di atas Keadaan awal : Found False, I 1
Pencarian dilakukan sampai dengan posisi akhir pada array atau data ditemukan Keadaan Akhir : Found Found False, berarti nilai yang dicari tidak ketemu True, berarti nilai yang dicari ketemu
I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
Jurusan Teknik Informatika IX/XII - 11 Universitas Widyatama Jurusan Teknik Informatika IX/XII - 12 Universitas Widyatama
11/11/2010
Sequential Search (Dengan Variabel Logika) untuk kondisi data tidak terurut
Judul Kamus : Algoritma untuk mencari bilangan X : ARRAY A[1..10] = array yang menampung data dalam tabel I = integer, counter pengulangan X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika untuk mengetahui ketemu/tidak nilai yang akan dicari Algoritma : INPUT X, I 1, Found False WHILE (I <= 10) AND ( Not Found) DO IF A[I] = X THEN Found True ELSE I I+1 ENDIF END WHILE IF Found THEN OUTPUT Ditemukan di elemen ke-,I ELSE OUTPUT Tidak ditemukan END IF
Jurusan Teknik Informatika IX/XII - 13 Universitas Widyatama
Misalnya, terdapat sebuah array seperti di atas Keadaan awal : Found False, I 1
Pencarian dilakukan selama nilai dalam array < nilai yang dicari Keadaan Akhir : Found False, berarti nilai yang dicari tidak ketemu Found True, berarti nilai yang dicari ketemu I akan diisi nomor indeks yang array-nya bernilai X, bila nilai yang dicari ketemu
Jurusan Teknik Informatika IX/XII - 14 Universitas Widyatama
Searching (2)
Sequential Search
Data Tidak Terurut scanf(%d,&Cari); i = 1; ketemu = 0; while (i <= N && ketemu == 0){ (Cari == Barang[i]) ? ketemu = 1: i++; } (ketemu == 1) ? printf("Barang ditemukan") : printf("Barang tidak ditemukan");
Jurusan Teknik Informatika
IX/XII - 16
{Sentinel adalah elemen fiktif yang dipasang setelah elemen terakhir atau di awal table}
Judul : Algoritma untuk mencari bilangan X Kamus : ARRAY A[1..11] = array yang menampung data dalam tabel I = integer, counter pengulangan X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika Algoritma : INPUT X, I 1, A[11] X {Sentinel di akhir} WHILE A[I] <> X DO I I+1 END WHILE IF I <> 11 THEN OUTPUT Ditemukan di elemen ke-,I ELSE OUTPUT Tidak ketemu END IF
Jurusan Teknik Informatika IX/XII - 18 Universitas Widyatama
Sentinel di awal
Pencarian dilakukan sampai dengan 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 I bukan sentinel berarti nilai X ditemukan
Jurusan Teknik Informatika IX/XII - 17 Universitas Widyatama
11/11/2010
{Sentinel adalah elemen fiktif yang dipasang setelah elemen terakhir atau di awal table}
Judul : Algoritma untuk mencari bilangan X Kamus : ARRAY A[1..11] = array yang menampung data dalam tabel I = integer, counter pengulangan X = integer, variabel yang menampung data yang akan dicari Found = boolean, variabel logika Algoritma : INPUT X, I 1, A[11] X {Sentinel di akhir} WHILE A[I] < A[11] DO I I+1 END WHILE IF I <> 11 THEN OUTPUT Ditemukan di elemen ke-,I ELSE OUTPUT Tidak ketemu END IF
Jurusan Teknik Informatika IX/XII - 20 Universitas Widyatama
Sentinel di awal
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 I bukan sentinel berarti nilai X ditemukan
IX/XII - 19
Universitas Widyatama
Searching (2)
Sequential Search
Data Tidak Terurut i = N; j=0; scanf(%d,&Barang[j]); while (i >= 1 && Barang[i] != Barang[j]) { ii- -; } (i >= 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");
Merupakan metode pencarian yang diterapkan pada kumpulan data yang telah terurut (terurut menaik atau terurut menurun), yang merupakan syarat mutlak dari proses pencarian yang menggunakan metode ini. Pencarian dilakukan dengan membagi dua larik yang sudah terurut, hal ini dilakukan sampai data tersebut ditemukan (nilai yang dicari adalah nilai yang di tengah) Ilustrasi metode Binary Search : Terdapat suatu larik A yang sudah terurut, dan akan dicari suatu nilai tertentu pada larik tersebut, misalnya nilai X.
IX/XII - 21
Universitas Widyatama
IX/XII - 22
Universitas Widyatama
IX/XII - 23
Universitas Widyatama
IX/XII - 24
Universitas Widyatama
11/11/2010
Searching (3)
Binary Search
kiri = 0; kanan = NN-1; ketemu = 0; while (kiri < kanan && ketemu == 0) { tengah = (kiri + kanan) / 2; if (Barang[tengah] == Cari) ketemu = 1; else { (Barang[tengah]< Cari) ? kiri = tengah + 1 :kanan = tengah - 1; } } (ketemu == 1) ? printf("Barang ditemukan") :printf("Barang tidak ditemukan");
Jurusan Teknik Informatika IX/XII - 25 Universitas Widyatama
SORTING (PENGURUTAN)
DEFINISI PENGURUTAN
Pengurutan (Sorting) adalah suatu proses untuk mengatur sekumpulan data atau objek menurut susunan atau urutan tertentu. Dibedakan menjadi 2 macam, yaitu : Pengurutan Internal yaitu pengurutan terhadap sekumpulan data yang disimpan dalam media internal komputer, yang dapat diakses setiap elemennya secara langsung dan disebut juga sebagai pengurutan tabel. Pengurutan Eksternal, yaitu pengurutan data yang disimpan dalam memori sekunder, biasanya data berukuran besar sehingga tidak mampu untuk dimuat semuanya dalam memori komputer disebut juga pengurutan arsip (file).
IX/XII - 26
Universitas Widyatama
Sorting (1)
Tujuan : menyusun nilai/elemen (biasanya dalam array atau file) sedemikian rupa berdasarkan aturan tertentu (ascending/descending) Jenis
Internal Sorting
Selection Sort Bubble Sort Insertion Sort
Eksternal Sorting
Jurusan Teknik Informatika IX/XII - 27 Universitas Widyatama Jurusan Teknik Informatika IX/XII - 28 Universitas Widyatama
Maksimum Sort :
Ilustrasi Pengurutan : Secara Ascending(terurut dari kecil ke besar) 65 65 40 30 5 5 20 20 20 20 20 20 5 5 5 5 30 30 30 30 30 40 40 40 85 40 65 65 65 65 40 85 85 85 85 85 data asal langkah 1 langkah 2 langkah 3 langkah 4 langkah 5
65 85 85 85 85 85
20 20 65 65 65 65
5 5 5 40 40 40
30 30 30 30 30 30
85 65 20 20 20 20
40 40 40 5 5 5
IX/XII - 29
Universitas Widyatama
IX/XII - 30
Universitas Widyatama
11/11/2010
Sorting (2)
Selection Sort menggunakan nilai minimum
Bubble Sort
Metode ini menggunakan prinsip pengapungan (diinspirasi oleh gelembung sabun yang berada di atas permukaan air). Elemen larik yang berharga paling kecil diapungkan, artinya diangkat keatas (atau ujung kiri larik) melalui proses pertukaran. Proses pengapungan ini dilakukan sampai larik terurut.
for(i=0;i<Nfor(i=0;i<N -1;i++) { min=i; for(j=i+1;j<N;j++) if(Barang[j] < Barang[min]) min = j; Temp = Barang[min]; Barang[min] = Barang[i] Barang[i] = Temp; }
Jurusan Teknik Informatika IX/XII - 31 Universitas Widyatama
IX/XII - 32
Universitas Widyatama
Sorting (3)
Bubble Sort
for(i=0;i<Nfor(i=0;i<N -1;i++) { for(j=Nfor(j=N -1;j>=i;j 1;j>=i;j---) ) { if(Barang[j] < Barang[jBarang[j-1]) { //proses pertukaran Temp = Barang[j]; Barang[j] = Barang[jBarang[j-1]; Barang[jBarang[j -1] = Temp; } } }
IX/XII - 34 Universitas Widyatama
langklah 2
IX/XII - 33
Universitas Widyatama
Insertion Sort
Insertion Sort
Merupakan metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi ini dilakukan secara sequential. Selama pencarian posisi ini, dilakukan pergeseran elemen larik.
Ilustrasi besar) 29 27 10 8 8 8 Insertion Sort : (untuk menghasilkan data terurut dari kecil ke 27 29 27 10 10 10 10 10 29 27 27 21 8 8 8 29 29 27 76 76 76 76 76 29
IX/XII - 35
Sorting (4)
for(i=1;i<N;i++) { Temp = Barang[i] j=ij=i-1; Ketemu = 0; while (j>=0 && Ketemu == 0) { if(Temp < Barang[j]) { Barang[j+1] = Barang[j]; j---; ; } else { Ketemu = 1;} } Barang[j+1] = Temp; }
IX/XII - 36 Universitas Widyatama
21 21 21 21 21 76