2017-04-21 6 views
-1

Können Sie eine Funktion für ein ungeordnetes Array erstellen, um Zahlen numerisch zu sortieren? Es kann in Ruby oder einem einfachen Pseudocode sein.Funktion für ein ungeordnetes Array, Zahlen numerisch zu sortieren?

$unordedNumbersArray = array(10, 35, 11, 250, 48); 

Meine Antwort war:

sort($unordedNumbersArray);  
$clength = count($unordedNumbersArray); 
for($x = 0; $x < $clength; $x++) { 
    echo $unordedNumbersArray[$x]; 
    echo "<br>"; 
} 

Aber es wurde nicht akzeptiert, weil mein Senioren-Entwickler versucht, meinen Programmierstil zu finden. Ich kann sort() oder eine ähnliche Funktion nicht verwenden.

Kann jemand bitte erklären, oder ein Beispiel zeigen, wie man diese Art von Aufgabe aussortiert, bitte!

+2

Werfen Sie einen Blick hier: https://www.toptal.com/developers/sorting-algorithms – Gerry

+0

Willkommen bei Stack Overflow. Bitte lesen Sie "[fragen]", "[mcve]" und die verlinkten Seiten. Deine Frage ist zu weit gefasst. Sie bitten uns, Code entweder in PHP oder Ruby zu schreiben oder in PHP oder Ruby geschriebenen Code zu erklären. –

Antwort

2

Try this: Bitte schauen Sie in diesen Bubble Sort

$unordedNumbersArray = array(10, 35, 11, 250, 48); 

$clength = count($unordedNumbersArray); 
for ($x = 0; $x < $clength; $x++) { 
    for ($y = $x + 1; $y < $clength - 1; $y++) { 
     if ($unordedNumbersArray[$x] > $unordedNumbersArray[$y]) { 
      $temp = $unordedNumbersArray[$x]; 
      $unordedNumbersArray[$x] = $unordedNumbersArray[$y]; 
      $unordedNumbersArray[$y] = $temp; 
     } 
    } 
} 
var_dump($unordedNumbersArray); 

Ausgang:

array(5) { [0]=> int(10) [1]=> int(11) [2]=> int(35) [3]=> int(48) [4]=> int(250) } 
+1

Vielleicht solltest du erklären, was ein Bubble Sort ist, wenn du gerade dabei bist. – engineersmnky

+0

ja danke Das wäre nette Angewohnheit – Omi

+1

danke @engineersmnky für Ihre Unterstützung. Ich schätze Sie, wie Sie neue Benutzer unterstützen. mach weiter so :) – Omi

2

Sie in O sortieren (n) unter Verwendung counting sort, wenn Zahlen in Array in Bereich (0 , 10^6) Ansonsten müssen Sie bubblesort O (n^2) oder mergesort O (nlogn) verwenden

Zählen Sortieralgorithmus in Ruby:

arr = [10, 35, 11, 250, 48] 
sorted_arr = [] 
arr_hash = {} 
arr.map{|element| arr_hash[element] = 1} 
(0..1000000).each do |n| 
    sorted_arr << n if arr_hash[n] 
end 
puts sorted_arr 
+0

counting sort kann mehr als das eingeschränkt werden, indem du min und max aus dem ursprünglichen Array ziehst. Während es eine zusätzliche Schleife erfordert, wäre es wahrscheinlich schneller als das Durchlaufen von 10^6 Elementen. – engineersmnky

+0

Wie finden Sie Min und Max in Array, im schlimmsten Fall von Array-Größe von 10^6, werden Sie eine Schleife vergeuden Suche nach Minimum und Maximum der Array, Worst-Case-Analyse betrachten nicht die besten Fälle – aqfaridi

+0

berücksichtigen alle Fälle vor allem, wenn gegeben Array. an besten Fällen durchführen und das schlechteste behandeln. derzeit nehmen wir das schlimmste an, ohne es zu berücksichtigen – engineersmnky

Verwandte Themen