Quick short

2,329 views
2,166 views

Published on

Modul Quick short C++

Published in: Education, Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,329
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
84
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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 />

×