login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Overige scripts > QuickSort

QuickSort

Auteur: Button - 26 augustus 2010 - 15:37 - Gekeurd door: Koen - Hits: 3300 - Aantal punten: (0 stemmen)



Quicksort - het Quicksort sorteeralgoritme. Wordt gebruikt door php voor de functie sort(). Een implementatie van het Quicksort algoritme, daarom zelfs niet het meest efficiënte, maar een voorbeeld van hoe het geïmplementeerd kan worden.

Waarom dan gebruiken?

- Ter illustratie.
- Ter vergelijking met andere sorteeralgortmen (Insertion Sort, Bubble Sort, ...)
- ...

Wikipedia over QuickSort:
"QuickSort sorteert op basis van recursie en omwisseling. In een set gegevens van N elementen wordt ergens een spilwaarde gekozen (meestal gewoon de middelste). Dan wordt van de onderkant van de set gezocht naar een waarde die groter is dan de spil, en van de bovenkant naar een waarde die kleiner is dan de spil. Deze worden omgewisseld, en dit wordt herhaald tot de zoekpointers tot aan de spil komen. Dan zijn alle gegevens aan de ene kant kleiner dan de spil, en aan de andere kant groter. Door nu de QuickSort over deze twee deel-sets aan te roepen (recursie), worden deze ook weer voor-gesorteerd, net zolang tot de deelset nog maar uit 1 data-element bestaat, en de hele set gesorteerd is. "

Expected Case: O(n*log n)
Worst Case: O(n^2)


http://nl.wikipedia.org/wiki/Quicksort

Code:
  1. <?php
  2.  
  3. /*
  4.  *@description: implements quicksort algorithm
  5. */
  6.  
  7. function QuickSort($arr) {
  8. $arrLTP = $arrGTP = array(); // array less/greater than pivot
  9. $len = sizeof($arr);
  10. $pivot = 0; // we choose pivot as first element of array
  11. if ($len >= 1) {
  12. for ($i = 1; $i < $len; $i++) {
  13. if ($arr[$i] > $arr[$pivot]) {
  14. $arrGTP[] = $arr[$i];
  15. } else {
  16. $arrLTP[] = $arr[$i];
  17. }
  18. }
  19. if (!empty($arrGTP)) {
  20. $arrGTP = QuickSort($arrGTP);
  21. }
  22. if (!empty($arrLTP)) {
  23. $arrLTP = QuickSort($arrLTP);
  24. }
  25. $arrSorted = array_merge($arrLTP, array($arr[$pivot]), $arrGTP);
  26.  
  27. return $arrSorted;
  28. } else {
  29. return array();
  30. }
  31. }
  32.  
  33. /*
  34. $quick = array(5,1,2,5,4,8,1,6,84,3,8,84,2,8);
  35. $quicksort = Quicksort($quick);
  36. foreach($quicksort as $v) {
  37. echo $v . " ";
  38. }
  39. */
  40. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Geen reacties (0)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.023s