Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Quick short

2,526 views

Published on

Modul Quick short C++

Published in: Education, Technology, Business
  • Be the first to comment

  • Be the first to like this

Quick short

  1. 1. QUICK SHORT<br />
  2. 2. Pengertian<br /> Quick short adalahalgoritmapengurutan data yang paling cepatdan paling banyakdigunakandalampengurutan data. Quick short seringdisebutjuga partition Exchange short, karenadalamprosespengurutannyamembagi-membagi data menjadibeberapapartisi-partisidandibandingkandalampartisi-partisitersebut. <br />
  3. 3. Teknikpartisitabel<br />Pilihsebagaielemen pivot<br />Pindai (scan) tabeldarikirisampaiditemukanelemenap≥ x<br />Pindaitabeldarikanansampaiditemukanelemenaq≤ x<br />Tukarapdenganaq<br />Ulangilangkah 2 dariposisi p+1, danlangkah 3 dariposisi q-1, sampaikeduapemindaianbertemuditengahtabel<br />
  4. 4. Cara mencari pivot<br />Dalam quick sort, pemilihan pivot adalahhal yang menentukanapakahalgoritmatersebutakanmemberikanperformaterbaikatauterburuk, berikutbeberapacarapemilihan pivot :<br />1. Elemenpertama, elementengahataupunelemenakhir data. Cara inihanyabagusjikaelemen data tersusunsecaraacak, tetapitidakbagusjikaelemensemulasudahberurutan<br />
  5. 5. 2. Memilih pivot secaraacakdarisalahsatu data padaelemen data. Cara inibagus, tapibanyakmenghabiskanbanyakmemori, karenaperlubanyakmemoriuntukmembangkitkanpengacakan data. Lagipulaitutidakmengurangikompleksitaswaktualgoritma.<br />3. Elemen median data. Cara ini paling bagus, karenahasilpartisimenghasilkanduabagiantabel yang berukuranseimbang (masing-masing =n/2 elemen). Cara inimemberikankompleksitaswaktu yang minimum. Masalahnya, mencari median darielemen data yang belumterurutadalahpersoalantersendiri.<br />
  6. 6. ContohAnalisis quick short<br />Misalkan data sepertiberikut:<br />47<br />91<br />90<br />31<br />63<br />18<br />21<br />47<br />p<br />91<br />90<br />31<br />pivot<br />63<br />18<br />21<br />q<br />47<br />p<br />91<br />90<br />31<br />pivot<br />63<br />18<br />21<br />q<br />Langkah 1<br />Langkah 2 dan 3<br />
  7. 7. Langkah 4<br />21<br />p<br />91<br />90<br />31<br />pivot<br />63<br />18<br />47<br />q<br />21<br />91<br />p<br />90<br />31<br />pivot<br />63<br />18<br />q<br />47<br />21<br />18<br />p<br />90<br />31<br />pivot<br />63<br />91<br />q<br />47<br />Langkah 2 dan 3<br />Langkah 4<br />
  8. 8. 21<br />18<br />90<br />p<br />31<br />pivot<br />63<br />q<br />91<br />47<br />21<br />18<br />63<br />p<br />31<br />pivot<br />90<br />q<br />91<br />47<br />21<br />18<br />63<br />p<br />31<br />Pivot<br />q<br />90<br />91<br />47<br />21<br />18<br />31<br />Pivotp<br />63<br />q<br />90<br />91<br />47<br />Langkah 2 dan 3<br />Langkah 2 dan 3<br />Langkah 4<br />Langkah 4<br />
  9. 9. Hasilpartisipertama:<br />Kiri: tabela<br />21<br />18<br />21<br />p<br />18<br />Pivot<br />q<br />63<br />90<br />91<br />47<br />Kanan: tabel b (pivot dansetelahnya)<br />31<br />Rekursiftabelkiri<br />Langkah 2 dan 3<br />
  10. 10. Langkah 4<br />18<br />Pivot<br />p<br />21<br />q<br />Karenasetelahsampaidi pivot, p<q makaprosespadatabel a selesaimakaprosesberhenti<br />18<br />21<br />
  11. 11. Rekursiftabelb:<br />Langkah 2 dan 3<br />63<br />90<br />91<br />47<br />63<br />p<br />90<br />pivot<br />91<br />47<br />q<br />47<br />p<br />90<br />pivot<br />91<br />63<br />q<br />31<br />31<br />31<br />Langkah 4<br />
  12. 12. Langkah 2 dan 3<br />Karenasetelahsampaidi pivot, p<q makaprosespadatabel a selesaimakaprosesberhenti<br />b.1<br />47<br />p<br />90<br />pivot<br />91<br />63<br />q<br />47<br />31<br />31<br />b.2 (pivot dansetelahnya)<br />90<br />91<br />63<br />
  13. 13. Prosesrekursi b.1<br />47<br />q<br />31<br />Pivot<br />p<br />Karenasetelahsampaidi pivot, p<q makaprosespadatabel b.1 selesai<br />47<br />31<br />Prosesrekursi b.2<br />90<br />p<br />91<br />pivot<br />63<br />q<br />90<br />p<br />91<br />pivot<br />63<br />q<br />Langkah 2 dan 3<br />
  14. 14. Langkah 4<br />Langkah 2 dan 3<br />Langkah 4<br />63<br />p<br />91<br />pivot<br />90<br />q<br />63<br />91<br />Pivot<br />p<br />90<br />q<br />63<br />90<br />p<br />91<br />pivot<br />q<br />
  15. 15. Karenasetelahsampaidi pivot, p<q makaprosespadatabel b.2selesai<br />63<br />b.2.1<br />90<br />91<br />90<br />Pivot <br />p<br />91<br />q<br />Prosesrekursi b.2.1<br />Karenasetelahsampaidipivot, p<q makaprosespadatabel b.2selesai<br />90<br />91<br />
  16. 16. Data setelahdiurut<br />Setelahproses, data-data disatukan<br />18<br />21<br />31<br />47<br />63<br />90<br />91<br />
  17. 17. ContohProgramnya<br />#include <iostream.h><br />#include <conio.h><br />int data[100],data2[100];<br />int n;<br />void tukar(inta,int b)<br />{<br />int t;<br />t = data[b];<br />data[b] = data[a];<br />data[a] = t;<br />}<br />void QuickSort(int L, int R)<br />{<br />inti, j;<br />int mid;<br />i = L;<br />j = R;<br />mid = data[(L+R) / 2];<br />do<br />{<br />while (data[i] < mid) i++;<br />while (data[j] > mid) j--;<br />if (i <= j)<br />{<br />tukar(i,j);<br />i++;<br />j--;<br />};<br />} while (i < j);<br />if (L < j) QuickSort(L, j);<br />if (i < R) QuickSort(i, R);<br />}<br />
  18. 18. void Input()<br />{<br />cout<<"Masukkanjumlah data = "; cin>>n;<br />for(inti=0;i<n;i++)<br />{<br />cout<<"Masukkan data ke-"<<(i+1)<<" = "; cin>>data[i];<br />data2[i] = data[i];<br />}<br />}<br />void Tampil()<br />{<br />cout<<"Data : "<<endl;<br />for(inti=0;i<n;i++)<br />{<br />cout<<data[i]<<" ";<br />}<br />cout<<endl;<br />}<br />void AcakLagi()<br />{<br />for(inti=0;i<n;i++)<br />{<br />data[i] = data2[i];<br />}<br />cout<<"Data sudahteracak!"<<endl;<br />}<br />
  19. 19. void main()<br />{<br />intpil;<br />clrscr();<br />do<br />{<br />clrscr();<br />cout<<"Program Sorting !!!"<<endl;<br />cout<<"*********************************************"<<endl;<br />cout<<" 1. Input Data"<<endl;<br />cout<<" 2. Quick Sort"<<endl;<br />cout<<" 3. Tampilkan Data"<<endl;<br />cout<<" 4. Acak Data"<<endl;<br />cout<<" 5. Exit"<<endl;<br />cout<<" PilihanAnda = "; cin>>pil;<br />switch(pil)<br />{<br />case 1:Input(); break;<br />case 2:QuickSort(0,n-1);<br />cout<<"quick sort selesai!"<<endl;<br />break;<br />case 3:Tampil(); break;<br />case 4:AcakLagi(); break;<br />}<br />getch();<br />}while(pil!=5);<br />}<br />

×