Αλγόριθμοι Ταξινόμησης *** php

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
tsiger
Honorary Member
Δημοσιεύσεις: 1431
Εγγραφή: 11 Νοέμ 2002 13:40
Τοποθεσία: Thessaloniki Observation Center
Επικοινωνία:

Αλγόριθμοι Ταξινόμησης *** php

Δημοσίευση από tsiger » 09 Φεβ 2005 09:55

Bubble Sort VS Quick Sort *** PHP

Και οι δυο αλγοριθμοι ειναι πολυ αργοι για παρα πολλα στοιχει αλλα για παραδειγμα μέχρι 100 στοιχεια λειτουργουν αρκετα γρηγορα.

Για ταξινόμηση πολλών στοιχείων καλο θα ητανε να χρησιμοποιησετε τον Αλγόριθμο Odd-Even Transposition Sort ή για απίστευτα γρήγορα αποτελέσματα τον Αλγόριθμο Shear Sort. Για τους πρώτους 2 αλγόριθμους παραθέτω κώδικα:





BUBBLE SORT ** PHP

Κώδικας: Επιλογή όλων

<?php

$array_size = 250;

// If you use v4.2.0 or lower uncomment this
// srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;;

// Generate $array_size random numbers to be sorted.
for&#40;$x = 0; $x < $array_size; $x++&#41;
  $ran&#91;$x&#93; = rand&#40;0, 500&#41;;

/* The bubble sort method.  If you don't know how it works it's very
 * simple, values are switched one at a time for each element. */
for&#40;$x = 0; $x < $array_size; $x++&#41; &#123;
  for&#40;$y = 0; $y < $array_size; $y++&#41; &#123;
    if&#40;$ran&#91;$x&#93; < $ran&#91;$y&#93;&#41; &#123;
      $hold = $ran&#91;$x&#93;;
      $ran&#91;$x&#93; = $ran&#91;$y&#93;;
      $ran&#91;$y&#93; = $hold;
    &#125;
  &#125;
&#125;

for&#40;$x = 0; $x < $array_size; $x++&#41;
  print $ran&#91;$x&#93; . "<br>";


?>



QUICK SORT ** PHP

Κώδικας: Επιλογή όλων

class Quicksort
&#123;
	function Quick_sort&#40;&$array,$start,$end&#41;
	&#123;

        $middle=$array&#91;floor&#40;&#40;$start+$end&#41;/2&#41;&#93;;
        $i=$start;
        $j=$end;

        do
        &#123;
                while &#40;$array&#91;$i&#93;<$middle&#41; $i++;
                while &#40;$array&#91;$j&#93;>$middle&#41; $j--;
                if &#40;$i<=$j&#41; 
                &#123;
                        $temp=$array&#91;$i&#93;; $array&#91;$i&#93;=$array&#91;$j&#93;; $array&#91;$j&#93;=$temp;//switch
                        $i++; $j--;
                &#125;
        &#125; while &#40;$i<=$j&#41;;


        if &#40;$end<$j&#41; $this->Quick_sort&#40;$array, $start, $j&#41;;
        if &#40;$i<$end&#41; $this->Quick_sort&#40;$array, $i, $end&#41;;

	&#125;
	
	function QS_get&#40;$array,$start,$end&#41;
	&#123;
		$temp=array&#40;&#41;;
		for&#40;$a=$start;$a<=$end;$a++&#41;
		&#123;
			$temp&#91;&#93;=$array&#91;$a&#93;;
		&#125;
		$this->Quick_sort&#40;$temp,0,count&#40;$temp&#41;-1&#41;;
		return $temp;
	&#125;	
&#125;
?>

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες