2017-03-25 3 views
1

ich einen Algorithmus schreibe die niedrigste Zahl in einem Array jedoch Aussage mein Blatt zu finden sagt immer wieder, dass die niedrigste Zahl ist 0. Ich habe folgendes:Wie finde ich die niedrigste Nummer in einem Array?

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 

func findMin(numbers: NSArray) { 

    var minValue = numbers[0] 
    var isSmallest: Bool 

    for i in 0...numbers.count { 
     isSmallest = true 
     for j in 0...numbers.count { 
      if i > j { 
       isSmallest = false 
      } 
     } 

     if isSmallest { 
      minValue = i 
     } 

    } 
    print("Smallest value in the list is \(minValue)") 
} 

findMin(numbers: list as NSArray) 

Meine print-Anweisung kehrt als:

"Smallest value in the list is 0\n" 

Ich fühle mich wie der Algorithmus korrekt ist. Irgendwelche Ideen?

EDIT: Beantwortet meine eigene Frage

Ich wurde über Indizes laufen und nicht die tatsächlichen Werte. Danke an einen der Nutzer in den Kommentaren. Der richtige Code sollte sein:

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 

func findMin(numbers: NSArray) { 

    var minValue = numbers[0] 
    var isSmallest: Bool 

    for i in list { 
     isSmallest = true 
     for j in list { 
      if i > j { 
       isSmallest = false 
      } 
     } 

     if isSmallest { 
      minValue = i 
     } 

    } 

    print("Smallest value in the list is \(minValue)") 
} 

findMin(numbers: list as NSArray) 
+0

, in welcher Sprache Sie dies tun wollen finden kann? –

+0

Gibt es die richtigen Antworten? –

+0

@ArjunBhoot Swift –

Antwort

7

Einfach

let list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
let minValue = list.min() 
0

hier ist es Ihre Lösung

let numbers = [1, 6, 3, 9, 4, 6] 

let min = minElement(numbers) // 1 

let position = find(array, min)// it will return index 
+1

'minElement (array)' wurde ersetzt durch 'array.min()' –

1

Oder Sie könnten nur

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
list.min() // returns 2 
0

verwenden Wenn Sie möchten Um den minimalen Wert ohne eine zusätzliche Schleife zu finden, versuchen Sie Folgendes:

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 

func findMin(numbers: NSArray) { 

    var minValIdx = 0 
    var minValue = numbers[0] as! Int 

    for i in 1..<numbers.count { 
     if (numbers[i] as! Int) < minValue { 
      minValue = numbers[i] as! Int 
      minValIdx = i 
     } 
    } 

    print("Smallest value in the list is \(minValue)") 
} 

findMin(numbers: list as NSArray) 
1

Für Logik Verwendung versuchen, diese

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
    var minValue = list[0] 
    for num in list { 
     minValue = (num < minValue) ? num : minValue 
    } 
    print("Smallest value in the list is \(minValue)") 

Sofort erhalten min Wert von Immobilien

let list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
let minValue = list.min() 
+1

'minValue = min (num, minValue)' wäre wahrscheinlich für einen Lehrer akzeptabel :) Sie sollten sich auch mit einer leeren Liste beschäftigen :) –

0

Nur noch ein paar Möglichkeiten gibt zu werfen, die Sie tatsächlich angenommen haben zu zeigen, einige Logik:

func min<T:Comparable>(_ elements:[T]) -> T? { 
    guard let first = elements[0] else { 
     return nil 
    } 
    return elements.reduce(first, min) 
} 

print(min(list)) 

oder es in einer Verlängerung setzen, dies im Wesentlichen die Definition von Array.min

extension Array where Element : Comparable { 
    func smallest() -> Element? { 
     guard let first = self.first else { 
      return nil 
     } 

     // Use 'Swift.min' to get to the global function since Array 
     // already has a min function 
     return reduce(first, Swift.min) 
    } 
} 

print(list.smallest()) 
0

Sie diesen Code verwenden können, ist: es ist in C#

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
      int minVal = list[0]; 

     for (int i = 1; i < list.Length; i++) 
     { 
      if (list[i] < minVal) 
      { 
       minVal = intArray[i]; 
      } 
     } 
0

Um das kleinste Element in der Sequenz zu finden, Swift 3 eine istance Methode hat min() genannt:

var list = [5, 4, 3, 5, 2, 50, 8, 10, 300] 
let minElem = list.min() 

I f Die Sequenz hat keine Elemente, gibt zurück.

Dieses Verfahren kann auch für eine Liste der Schwimmer verwendet werden:

let heights = [67.5, 65.7, 64.3, 61.1, 58.5, 60.3, 64.9] 
let minHeight = heights.min() 

Sie das offizielle Dokument referece here

Verwandte Themen