Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

STRUKTUR DATA (4) Sorting dan Searching Array Oleh Najirah Umar.

Presentasi serupa


Presentasi berjudul: "STRUKTUR DATA (4) Sorting dan Searching Array Oleh Najirah Umar."— Transcript presentasi:

1 STRUKTUR DATA (4) Sorting dan Searching Array Oleh Najirah Umar

2 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:  Ascending:  Descending:

3 Metode Pengurutan Data comparison-based sorting)  Pengurutan berdasarkan perbandingan ( comparison-based sorting) Bubble sort, exchange sort priority queue sorting method)  Pengurutan berdasarkan prioritas ( priority queue sorting method) Selection sort, heap sort insert and keep sorted method  Pengurutan berdasarkan penyisipan dan penjagaan terurut ( insert and keep sorted method ) Insertion sort, tree sort devide and conquer method  Pengurutan berdasarkan pembagian dan penguasaan ( devide and conquer method ) Quick sort, merge sort diminishing increment sort method  Pengurutan berkurang menurun ( diminishing increment sort method ) Shell sort

4 Deklarasi Array  Deklarasikan: int data[100]; int n; //untuk jumlah data  Fungsi untuk Tukar 2 Buah Data (by reference):  void tukar(int *a,int *b){  int t=*a;  *a=*b;  *b=t; }

5 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.

6 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.

7 Bubble Sort (3)

8 Bubble Sort (4)

9 Bubble Sort (5)

10 Bubble Sort (6)  Versi 1 void bubble_sort(){ for(int i=1;i=i;j--){ if(data[j]

11 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[j1]);

12 Exchange Sort  Sangat mirip dengan Bubble Sort  Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort  Pebedaan : dalam hal bagaimana membandingkan antar elemen-elemennya. Exchange sort membandingkan suatu elemen dengan elemen-elemen lainnya dalam array tersebut, dan melakukan pertukaran elemen jika perlu. Jadi ada elemen yang selalu menjadi elemen pusat (pivot). Sedangkan Bubble sort akan membandingkan elemen pertama/terakhir dengan elemen sebelumnya/sesudahnya, kemudian elemen tersebut itu akan menjadi pusat (pivot) untuk dibandingkan dengan elemen sebelumnya/sesudahnya lagi, begitu seterusnya.

13 Exchange Sort (2)

14 Exchange Sort (3)

15 Exchange Sort (4)

16 Exchange Sort (5)  Prosedur Exchange Sort void exchange_sort() { for (int i=0; i

17 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.

18 Selection Sort (2)

19

20

21 Selection Sort (3)  Prosedur Selection Sort void selection_sort(){ for(int i=0;i

22 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

23 Insertion Sort (2)

24 Insertion Sort (3)

25 Insertion Sort (4)  void insertion_sort(){  int temp;  for(int i=1;itemp && j>=0){  data[j+1] = data[j];  j--;  }  data[j+1] = temp;  }

26 Tugas Carilah 2 metode sorting lainnya dan tuliskan dalam bentuk paper beserta source code, cara kerjanya dan analisis kelebihan dan kekurangan dari tiap-tiap metode sorting yang ada! ( Minimum 2 halaman dengan jarak spasi 1,5) lalu kirimkan ke paling lambat tanggal 6 Desember 2009 pukul 10.oo Wita. NEXT: Searching Array

27 SEARCHING ARRAY  Sesuai dengan judulnya, yang akan dibahas adalah proses pencarian / searching data pada suatu array / barisan data. Jika diketahui ada sebuah array / barisan data bernama A yang menampung 10 data yang bertipe integer sbb A={1,2,3,4,8,5,7,9,6,0} dan kita diberi tugas untuk mencari beberapa data misal:  Jika data yang akan dicari dalam array A adalah 6, maka dengan cepat dapat kita ketahui bahwa data 6 ada dalam array A pada index ke-9 (index pada array dimulai dari 0)  Sedangkan jika data yang akan dicari dalam array A adalah 12, maka dapat disimpulkan bahwa array A tidak memiliki data 12 tersebut.

28 Sambungan  Dua metode searching antara lain : Sequensial search dan binary search, Untuk lebih memahami kedua metode ini lebih baik kita mulai dari metode yang paling sederhana terlebih dahulu yaitu sequensial search

29 Sequensial search  Disebut juga sebagai metode pencarian urut adalah dengan cara membandingkan satu persatu data yang ada metode pencarian yang paling mudah dengan proses sebagai berikut :  Tentukan banyaknya data yang akan di olah, missal banyak data adalah N.  Tentukan data apa yang akan dicari, missal data yang akan dicari adalah C.  Deklarasikan sebuah counter untuk menghitung banyak data yang ditemukan, missal counternya adalah K.  Inisialisasikan K =0  Lakukanlah perulangan sebanyak N kali  Dalam tiap proses perulangan tersebut periksalah apakah data yang sedang diolah sama dengan data yang dicari.

30 Sambungan  Jika ternyata sama K=K+1  Jika tidak, lanjutkan proses perulangan.  Setelah proses perulangan berhenti, periksalah nilai K.  Jika nilai K lebih dari 0, artinya data yang dicari ada dalam data /array dan tampilkan nilai K ke layer sebagai jumlah data yang ditemukan.  Jika nilai K=0, artinya data yang dicari tidak ditemukan dalam data / array dan tampilkan ke layar bahwa data tidak ditemukan  Proses selesai.

31 Contoh  #include  void main()  {  //deklarasi variabel  int A[10],index[10], i,j,k;  //proses penginputan data  for(i=0;i<10;i++)  {  printf("Data ke-%d:",i+1);  scanf("%d",&A[i]);  }  //memasukkan data yang akan dicari ke dalam K  printf("Masukkan data yang akan anda cari:");  scanf("%d",&k);  //proses pencarian data  j=0;  for (i=0;i<10;i++)  {  if(A[i]==k)  {  index[j]=i;  j++;  }  //jika data ditemukan dalam array  if (j>0)  {  printf("Data %d yang dicari ada %d buah\n",k,j);  printf("Data tersebut terdapat dalam index ke :");  for(i=0;i

32 Binary search  Proses pencarian binary search hanya dapat dilakukan pada kumpulan data yang sudah diurutkan terlebih dahulu. Jika terdapat N buah data yang akan dolah, data yang dicari akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data yang dicari maka akan dilakukan pembagian data menjadi dua bagian. Kemudian ujung data pada setiap bagian dibandingkan lagi dengan nilai yang akan dicari.

33  #include  void main()  {  //deklarasi variabel  int A[10], i,j,k,tkr,top,bottom,middle,tm;  //proses penginputan data  for(i=0;i<10;i++)  {  printf("Data ke-%d:",i+1);  scanf("%d",&A[i]);  }  printf("Masukkan data yang akan anda cari:");  scanf("%d",&k);  //proses pengurutan data   for(i=0;i<10;i++)  {  for(j=i+1;j<10;j++)  {  if (A[i]>A[j])  {  tkr=A[i];  A[i]=A[j];  A[j]=tkr;  }

34  //proses pencarian data  tm=0;  top=9;  bottom=0;  while(top>=bottom)  {  middle=(top+bottom)/2;  if(A[middle]==k)  {  tm++;  }  if(A[middle]0)  {  printf("Data %d yang dicari ada dalam array\n",k);  }  //jika tidak ditemukan  else  {  printf("Data tidak ditemukan dalam array\n");  }

35 Contoh kasus:  Ada 12 data  Data yang akan dicari : 13  Proses 1   lebih besar dengan data yg akan dicari, lakukan pembagian data  Proses 2   lebih besar dari data yang dicari, bagi  Proses 3   lebih besar dari data yang dicari, bagi

36  Proses 4  11  lebih kecil dari data yang dicari, abaikan saja  lebih besar dari data yang dicari, bagi  Proses 5   sesuai data yang dicari 15  lebih besar dari data yang dicari

37 Contoh  #include  void main()  {  //deklarasi variable  int A[10], i,j,k,tkr,low,high,pos,tm;  //proses penginputan data  for(i=0;i<10;i++)  {  printf("data ke-%d:",i+1);  scanf("%d",&A[i]);  }  //Input data yang akan dicari  printf("Masukkan data yang akan anda cari:");  scanf("%d",&k);  //proses pengurutan data  for(i=0;i<10;i++)  {  for(j=i+1;j<10;j++)  {  if (A[i]>A[j])  {  tkr=A[i];  A[i]=A[j];  A[j]=tkr;  }

38  //proses pencarian data  tm=0;  high=9;  low=0;  do  {  pos = ((k - A[low]) / (A[high] - A[low]))*(high-low) + low;  if (A[pos] == k)  {  tm++;  break;  }  if (A[pos] > k)  high = pos-1;  else  if (A[pos] < k)  low = pos + 1;  }  while(k >= A[low] && k <= A[high]);  if (tm>0)  {  printf("data %d yang dicari ada dalam array\n",k);  }  //jika tidak ditemukan  else  {  printf("data tidak ditemukan dalam array\n");  }


Download ppt "STRUKTUR DATA (4) Sorting dan Searching Array Oleh Najirah Umar."

Presentasi serupa


Iklan oleh Google