Search Merge dan Sort Pertemuan ke 12 Khoiriya

  • Slides: 35
Download presentation
Search, Merge dan Sort Pertemuan ke -12 Khoiriya Latifa, M. Kom.

Search, Merge dan Sort Pertemuan ke -12 Khoiriya Latifa, M. Kom.

Pertemuan ke 12 Kompetensi Dasar : • Mahasiswa mampu menjelaskan definisi pencarian, penggabungan dan

Pertemuan ke 12 Kompetensi Dasar : • Mahasiswa mampu menjelaskan definisi pencarian, penggabungan dan pengurutan data • Mahasiswa dapat melakukan dan mengimplementasikan pencarian, penggabungan, pengurutan data dalam bahasa pemrograman.

Definisi Searching • Pengertian search adalah mencari data dengan cara menelusuri tempat penyimpanan data

Definisi Searching • Pengertian search adalah mencari data dengan cara menelusuri tempat penyimpanan data tersebut. • Searching adalah proses mencari atau pencarian

Array Satu Dimensi Array satu dimensi adalah array yang memiliki 1 index. Nama Array

Array Satu Dimensi Array satu dimensi adalah array yang memiliki 1 index. Nama Array Integer Index Array Isian dari elemen array ke 4 Array bertipe integer 17 9 12 30 2 0 1 2 3 4 array bertype integer yang bernama Array. Integer dan memiliki kapasitas 5 buah bilangan Integer.

Mencari ADA atau tidak ADA suatu nilai : scanf(“%d”, &n); flag =0; i=0; while

Mencari ADA atau tidak ADA suatu nilai : scanf(“%d”, &n); flag =0; i=0; while (i<=10) { if(A[i]==N) flag = 1; i++; } If (flag ==1) printf(“ADA”); else printf(“TIDAK ADA”) }

Perintah Menggunakan For : scanf(“%d”, &n); flag =0; for(i=0; i<=10; i++) { if(A[i]==n) flag=1

Perintah Menggunakan For : scanf(“%d”, &n); flag =0; for(i=0; i<=10; i++) { if(A[i]==n) flag=1 } If (flag ==1) printf(“ADA”); else printf(“TIDAK ADA”) }

scanf(“%d”, &n); jum =0; i=0; while (i<=10) { if(A[i]==n) jum=jum+1; ******** > untuk menghitung

scanf(“%d”, &n); jum =0; i=0; while (i<=10) { if(A[i]==n) jum=jum+1; ******** > untuk menghitung indeks i++ } If (jum>0) printf(“ADA”); else printf(“TIDAK ADA”) }

scanf(“%d”, &n); flag=0; i=0; While (i<=10 && Flag ==0) { if(A[i]==n) flag =1; i++

scanf(“%d”, &n); flag=0; i=0; While (i<=10 && Flag ==0) { if(A[i]==n) flag =1; i++ } If (flag=1) printf(“ADA”); Else printf(“TIDAK ADA”) }

Contoh Soal Sebuah array yang mempunyi 10 kapasitas. A[10] dan sudah ada isinya. Bagaimana

Contoh Soal Sebuah array yang mempunyi 10 kapasitas. A[10] dan sudah ada isinya. Bagaimana program untuk menginput sebuah nilai baru dan mencocokan apakah ada isi array yang sama dengan input yang baru saja kita masukkan.

scanf(“%i”, &n) jum=0; for(i=0; i<=10; i++) { if(A[i]==n) jum=jum+1; } printf(“%i buah”, jum);

scanf(“%i”, &n) jum=0; for(i=0; i<=10; i++) { if(A[i]==n) jum=jum+1; } printf(“%i buah”, jum);

scanf(“%i, &n); jum=0; i=0; while(i<=10) { if (A[i] ==n) jum=jum+1; i++ } Printf(“%i buah”,

scanf(“%i, &n); jum=0; i=0; while(i<=10) { if (A[i] ==n) jum=jum+1; i++ } Printf(“%i buah”, jum);

 • Mengetahui lokasi mana saja yang nilai nya sama dengan input data yng

• Mengetahui lokasi mana saja yang nilai nya sama dengan input data yng kita masukkan : • Contoh program :

scanf(“%i”, n); jum=0; for(i=0; i<=10; i++) { if(A[i]==n) printf(“%i”, i); }

scanf(“%i”, n); jum=0; for(i=0; i<=10; i++) { if(A[i]==n) printf(“%i”, i); }

Mencari nilai maximal dan minimal dalam array max A[0]; // max=0; i=1; // i=0;

Mencari nilai maximal dan minimal dalam array max A[0]; // max=0; i=1; // i=0; while(i<=10) { if(A[i]>max) max=A[i]; i++ } printf(“%i”, max);

max = A[0]; // max=0 for(i=1; i<10; i++) { If(A[i]>max) max=A[i]; } printf(“%i”, max);

max = A[0]; // max=0 for(i=1; i<10; i++) { If(A[i]>max) max=A[i]; } printf(“%i”, max);

i=0; j=0; while(i<=10) { if(A[i]>A[j]) j=1; i++; } printf(“%i”, A[j])

i=0; j=0; while(i<=10) { if(A[i]>A[j]) j=1; i++; } printf(“%i”, A[j])

Contoh kasus : program untuk menghitung brp angka terbesar dan brp jumlah angka terbesar

Contoh kasus : program untuk menghitung brp angka terbesar dan brp jumlah angka terbesar tersebut max = A[0]; i=1; while(i<=10) { if(A[i]>max) max=A[i] i++ printf(“%i”, max); jum=0; i=0 while(i<=10) { if (A[i]==max) jum++ i++ } printff (“n%i”, jum);

jum =1; max = A[0]; for (i=1; i<=10; i++) { if (A[i]>max) { max

jum =1; max = A[0]; for (i=1; i<=10; i++) { if (A[i]>max) { max = A[i]; jum=1; } else { if(A[i]==max) jum = jum+1; } } printf(‘n. Bil terbesar : %i “, max); printf(“n ada sebanyak : %i buah”, jum);

Merge • Merge artinya menggabungkan. Dalam bahasa pemrograman biasanya dimaksudkan untuk menggabungkan dua file.

Merge • Merge artinya menggabungkan. Dalam bahasa pemrograman biasanya dimaksudkan untuk menggabungkan dua file. • Contoh merge dalam array : • Menggabugkan array A[5] dan B[7] menjadi array C. ilustrasi proses adalah sebagai berikut : • A = 1 2 3 4 • B = 11 12 13 14 15 16 17

Merge 2 buah array K=0 i=0; j=0; While(A[i] != 999 && B[j] !=999) {

Merge 2 buah array K=0 i=0; j=0; While(A[i] != 999 && B[j] !=999) { if(A[i] <= B[j]) {C[k]=A[i] k++ i++ Else { C[k]=B[j]; k++ j++ } } While(A[i] !=999) { c[k]=a[i]; k++ i++; } While(b[j] !=999) { C[k] = B[j] k++ i++ } C[k]=999;

Sort dalam Array • Pengertian Sort adalah mengurutkan data yang berada dalam suatu tempat

Sort dalam Array • Pengertian Sort adalah mengurutkan data yang berada dalam suatu tempat penyimpanan dengan urutan tertentu baik urut dari yang kecil ke besar (Ascending) atau sebaliknya dari besar ke kecil (Descending) • Proses pengurutannya disebut sorting. • Contoh : • array satu dimensi misalnya A[7]={12, 17, 10, 5, 25, 7, 15} • jika array diatas dikenakan program sebagai berikut • for (I=0; I<=5; I++) • { • • A[I]= A[I+1] }

I 12 17 10 5 25 7 15 Isi array awal 0 17 17

I 12 17 10 5 25 7 15 Isi array awal 0 17 17 10 5 25 7 15 Setelah A[0] = A[1] 1 17 10 10 5 25 7 15 Setelah A[1] = A[2] 2 17 10 5 5 25 7 15 Setelah A[2] = A[3] 3 17 10 5 25 25 7 15 Setelah A[3] = A[4] 4 17 10 5 25 7 7 15 Setelah A[4] = A[5] 5 17 10 5 25 7 15 Setelah A[5] = A[6] 15 17 10 5 25 7 15 Isi array terakhir ; isi A[6] tidak 15 berubah dan terlihat seperti digesr ke kiri

Bubble Sort • Sudah ada array satu dimensi yang dibuat dengan int A[n] dimana

Bubble Sort • Sudah ada array satu dimensi yang dibuat dengan int A[n] dimana n = 7 sudah disi dengan ilustrasi sebagai berikut ; • A[7]={15, 10, 7, 22, 17, 5, 12} sehingga hasil sorting menjadi {5, 7, 10, 12, 15, 17, 22} • Maka algorithma Bubble sort dalam bahasa C adalah sebagai berikut : #define n 7 for (K=0; K<=n-2; K++) { for (I=0; I<=n-2 -K; I++) { If(A[1] > A[I+1]) { X=A[I]; A[I] = A[I+1]; A[I+1]=X; } } } • • • •

Keterangan : 1. Define n 7 artinya kita mendefinisikan array dengan kapasitas 7 elemen

Keterangan : 1. Define n 7 artinya kita mendefinisikan array dengan kapasitas 7 elemen yang akan mengisi array yang kita buat 2. n = jumlah elemen = 7 3. Proses loop dilaksanakan sebanyak 6 kali yaitu K : dari 0 –(n-2) 4. Menukar isi A[1] dengan A[I=1] 5. SWAP bila A[1] > A[I+1] Ada dua komponen pokok algortihma sorting yaitu Comapare yang dilakukan dengan if() dan SWAP yaitu pertukaran isi 2 buah elemen Proses tahap per tahap : K=0 - K adalah nomor tahap , untuk tahap -1 , K=0 L=n-2 -K; for(i=0; i<=L; i++) { If(A[i] > A[i+1] { X=A[i]; A[i]=A[i+1]; A[i+1]=X; } } Bila A[0] > A[1] maka tukar isi A[1] dengan A[0], kemudian lanjutkan sampai A[n 2]

Bila menggunakan for maka penulisan program bubble sort adalah sebagai berikut : for (K=0;

Bila menggunakan for maka penulisan program bubble sort adalah sebagai berikut : for (K=0; K<=n-2; K++) { for(i=0; i<=n-1 -K ; i++) { if (A[i]>A[i+1] { X=A[i]; A[i]=A[i+1]; A[i+1]=X; } } }

#include <stdio. h> #include <string. h> #define n 7 void main () { int

#include <stdio. h> #include <string. h> #define n 7 void main () { int A[n] = { 15, 10, 7, 22, 17, 5, 12}; int X, i, K; printf(“Sebelum Sort : n”); for (i=0; i<=n-1; i++) printf(“%d”, A[I]); printf(“n”); K=0 While (K<=n-2) { i=0; while(i <= n-i-K) { If(A[i]>A[i+1]); { X=A[i]; A[i]=A[i+1]; A[i+1=X; } i++; } K++; } Printf(“Sesudah Sort : n”); For(i=0; i<=n-1; i++) Printf(“%d”, A[i]); }

#include<stdio. h> int main(){ int s, temp, i, j, a[20]; printf("Masukkan Jumlah Elemen Yang

#include<stdio. h> int main(){ int s, temp, i, j, a[20]; printf("Masukkan Jumlah Elemen Yang Akan Di Sorting : "); scanf("%d", &s); printf(" Masukkan %d elements: ", s); for(i=0; i<s; i++) { scanf("%d", &a[i]); printf("Tampilkan Elements sebelum Sorting : %d n ", a[i]); } //Bubble sorting algorithm for(i=s-2; i>=0; i--){ for(j=0; j<=i; j++){ if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } printf("Setelah sorting: "); for(i=0; i<s; i++) printf(" n %d", a[i]); return 0;

Selection Sort • Proses sort dilakukan tahap pertahap. untuk n=7 maka akan dilakukan (n-1)=6

Selection Sort • Proses sort dilakukan tahap pertahap. untuk n=7 maka akan dilakukan (n-1)=6 tahap. Konsep proses selection sort adalah mencari (memilih) nilai terkecil dan menukarnya dengan elemen paling awal (paling kiri) pada setiap tahap.

Algorithma dari selection sort adalah sebagai berikut : #define n 7 K=0; While (K

Algorithma dari selection sort adalah sebagai berikut : #define n 7 K=0; While (K <=n-2) { J=K; i=K+1; while (i<=n-1) { If(A[i] < A[J]) J=i; i++; } X=A[J]; A[J]=A[K]; A[K]=X; K++; }

 • J selalu menunjuk elemen yang berisi nilai kecil dalam bagian array yang

• J selalu menunjuk elemen yang berisi nilai kecil dalam bagian array yang diperiksa (dari 1 sampai 6) • Nilai terkecil yang ditunjuk oleh J ditukar dengan isi elemen yang sedang ditunjuk oleh K. Dengan demikian A[K] akan berisi nilai terkecil

#include<stdio. h> int main(){ int s, i, j, temp, a[20]; printf("Enter total elements: ");

#include<stdio. h> int main(){ int s, i, j, temp, a[20]; printf("Enter total elements: "); scanf("%d", &s); printf("Enter %d elements: ", s); for(i=0; i<s; i++) scanf("%d", &a[i]); for(i=0; i<s; i++){ for(j=i+1; j<s; j++){ if(a[i]>a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp; } } } printf("After sorting is: "); for(i=0; i<s; i++) printf(" %d", a[i]); return 0; }

Insertion Sort Konsep dari Insertion Sort adalah : • • • Dimulai dari A[1]

Insertion Sort Konsep dari Insertion Sort adalah : • • • Dimulai dari A[1] : simpan nilai A[1] ke variabel X. TAHAP -1 : geser (move) masing-masing satu langkah ke kanan semua nilai yang ada disebelah kiri A[1] satu persatu apabila nilai tersebut lebih besar dari X. Setelah itu insert – kan (sisipkan) X di bekas tempat nilai yang terakhir di geser. Instruksi unuk menggeser satu langkah ke kanan adalah : A[i]=A[i-1]; Dengan resiko isi A[i] sebelumnya hilang. Tetapi sudah disimpan dalam variabel X. Lanjutkan ke A[2] : simpan nilai A[2] ke variabel X geser (move) masing-masing satu langkah ke kanan semua nilai yang ada disebelah kiri A[2] satu persatu apabilai nilai tersebut lebih besar dari X. Setelah itu insert kan (sisipkan) X di bekas tempat nilai yang terakhir digeser

Algorithma insertion Sort mengunakan while adalah sebagai berikut : #define n 7 K=1; While

Algorithma insertion Sort mengunakan while adalah sebagai berikut : #define n 7 K=1; While (K <=n-1) { i=K; X=A[i]; While(I >=1 && A[i-1] >X) { A[i] = A[i-1]; i--; } A[i]=X; K++; }

#include<stdio. h> int main(){ int i, j, s, temp, a[20]; printf("Enter total elements: ");

#include<stdio. h> int main(){ int i, j, s, temp, a[20]; printf("Enter total elements: "); scanf("%d", &s); printf("Enter %d elements: ", s); for(i=0; i<s; i++) scanf("%d", &a[i]); for(i=1; i<s; i++){ temp=a[i]; j=i-1; while((temp<a[j])&&(j>=0)){ a[j+1]=a[j]; j=j-1; } a[j+1]=temp; } printf("After sorting: "); for(i=0; i<s; i++) printf(" %d", a[i]); return 0; }