Merge sort functie werkt niet

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Danny Spinhuis

Danny Spinhuis

22/11/2012 01:33:56
Quote Anchor link
Beste leden,

ik heb hier een stukje code geschreven voor de functie merge sort, maar het resultaat wordt niet geprint. Wat doe ik fout?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
echo "De gesorteerde reeks:";
$sorteerArray=array(12,9,3,16);
$returnArray;
merge_sort($sorteerArray);

function
merge_sort(&$sorteerArray)  
{
  
    if (sizeof($sorteerArray) <= 1)  
        return $sorteerArray;  
  
  // Verdeel de array in 2 helften
    // links  

    $linkerHelft = array_slice($sorteerArray, 0, (int)(count($sorteerArray)/2));  
    // rechts  
    $rechterHelft = array_slice($sorteerArray, (int)(count($sorteerArray)/2));  
  
// Splits de 2 gepsplitste helften weer
    $linkerHelft = merge_sort($linkerHelft);  
    $rechterHelft = merge_sort($rechterHelft);  
  
    $returnArray = merge($linkerHelft, $rechterHelft);  
  
    return $returnArray;  
}  
  
  
function
merge(&$links, &$rechts)  
{
  
    $result = array();  
  
// terwijl beide arrays iets bevatten, doe...
    while (count($links)>0 && count($rechts)>0) {  
        if ($links[0] <= $rechts[0]) {  
            array_push($result, array_shift($links));  
        }
  
        else {  
            array_push($result, array_shift($rechts));  
        }  
    }
  
    return $result;
}


print_r ($returnArray);    

?>
 
PHP hulp

PHP hulp

08/11/2024 15:55:22
 
Kris Peeters

Kris Peeters

22/11/2012 09:16:24
Quote Anchor link
Voor een deel gebruik je parameters "by reference", aan de andere kant geven de functies toch een return. Je gebruikt die niet consequent.

Je moet iets doen met de return van merge_sort.
Misschien helpt dit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
// lijn 4 en 5 vervangen door:
$returnArray = merge_sort($sorteerArray);
?>


----

Zeg, wat doet die functie precies? Mergen van dubbele items of zo ?
Gewijzigd op 22/11/2012 09:22:01 door Kris Peeters
 
Danny Spinhuis

Danny Spinhuis

02/12/2012 19:31:52
Quote Anchor link
Bedankt voor je reactie en excuus voor mijn late reactie.

Mergesort is een bekend algoritme, ik heb geprobeerd deze in PHP te laten functioneren. De functie zou de getallen in de array moeten sorteren door middel van eerst de hele reeks op te splitsen totdat de getallen 1 element zijn en ze vervolgens weer samen te voegen tot 1 gesorteerde reeks.

Ik heb inmiddels mijn hele code aangepast maar je reactie heeft desalniettemin geholpen. Thanks!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.