2017-12-07 2 views
0

Ich bin hypothetisch gegeben eine unsortierte Liste von x-Nummern und ich würde gerne die min finden. und max. Nummern in der Liste.Erhalten Sie min und max der unsortierten Liste

Jetzt basierend auf der Forschung, die ich getan habe, scheint die effizienteste Sortiermethode schnell zu sortieren.

+1

Ist das Sortieren eine Anforderung? Da Sie die Daten nicht sortieren müssen, um diese 2 Werte zu finden, führen Sie einfach eine lineare Traversierung durch und behalten Sie die Min- und Max-Werte im Auge. – Caleb

Antwort

0

Sorting ist bestenfalls eine O-Operation (N log N). Um eine Liste zu sortieren, müssen Sie bei jedem Wert suchen mindestens einmal O (N)

Es schneller durch das Array nur Schleife und verfolgt die kleinsten sein würde und größte Zahlen

 int[] unordered = { 5, 9, 4, 2, 6, 4 }; 
     int min=0, max=0; 

     for (int i = 0; i < unordered.Length; i++) 
     { 
      if (min > unordered[i]) min = unordered[i]; 
      if (max < unordered[i]) max = unordered[i]; 
     }  
+0

In C# können Sie einfach die "Array.Sort" -Methode verwenden und das Array, das Sie sortieren möchten, übergeben. Dann können Sie einfach auf den Index 0 und den letzten Index für die Min und Max zugreifen. –

+0

Schnelles Sortieren und Zusammenführen sortieren haben die gleiche Laufzeit O (N log N). Merge sort ist stabiler, benötigt aber mehr Platz. Die Einfügesortierung ist bei O (N^2) am langsamsten, nimmt jedoch den geringsten Platz ein. Sie können viele Implementierungen von Quicksort und Merge Sort auf Github finden. https://github.com/BotJeff/ProgrammingLessons/blob/master/Algorithms/Sorting/Quick.cs –

+0

Ja, das ist so ziemlich es –

0

Sie müssen die Werte nicht sortieren und erhalten die ersten und letzten indizierten Werte - der folgende iteriert einfach über das Zahlenfeld und prüft die Werte minNum und maxNum und setzt diese entsprechend zurück.

let numbers = [10,7,4,6,3,77,232,56,99]; 
 
let minNum = numbers[0]; 
 
let maxNum = numbers[0]; 
 

 

 
numbers.forEach(function(number) { 
 
    if(number < minNum) {minNum = number}; 
 
    if(number > maxNum) {maxNum = number}; 
 
}) 
 

 
console.log(minNum) // gives 3 
 
console.log(maxNum) // gives 232