algorithm                
            Auswahl sortieren
        
        
            
    Suche…
Auswahl sortieren Basisinformationen
Auswahlsortierung ist ein Sortieralgorithmus, insbesondere eine Direktvergleichssortierung. Es hat eine O (n2) -Zeitkomplexität, was es bei großen Listen ineffizient macht und im Allgemeinen schlechter abschneidet als die ähnliche Sortierreihenfolge. Die Auswahl der Auswahl ist für ihre Einfachheit bekannt und hat in bestimmten Situationen, insbesondere wenn der Hilfsspeicher begrenzt ist, Leistungsvorteile gegenüber komplizierteren Algorithmen.
Der Algorithmus teilt die Eingabeliste in zwei Teile auf: die Unterliste der bereits sortierten Elemente, die von links nach rechts am Anfang (links) der Liste aufgebaut ist, und die Unterliste der noch zu sortierenden Elemente, die den Rest der Liste belegen Liste. Anfangs ist die sortierte Unterliste leer und die unsortierte Unterliste ist die gesamte Eingabeliste. Der Algorithmus fährt damit fort, das kleinste (oder je nach Sortierreihenfolge größte) Element in der unsortierten Unterliste zu finden, es mit dem ganz linken unsortierten Element auszutauschen (zu sortieren) und die Unterlistengrenzen um ein Element nach rechts zu verschieben .
Pseudocode für Auswahl sortieren:
function select(list[1..n], k)
 for i from 1 to k
     minIndex = i
     minValue = list[i]
     for j from i+1 to n
         if list[j] < minValue
             minIndex = j
             minValue = list[j]
     swap list[i] and list[minIndex]
 return list[k]
 Visualisierung der Auswahlart:
Beispiel für die Auswahl der Sortierung:
 Hilfsraum: O(n) 
 Zeitkomplexität: O(n^2) 
Implementierung der Auswahlsortierung in C #
Ich habe die C # -Sprache verwendet, um den Selection-Sortieralgorithmus zu implementieren.
public class SelectionSort
{
    private static void SortSelection(int[] input, int n)
    {
        for (int i = 0; i < n - 1; i++)
        {
            var minId = i;
            int j;
            for (j = i + 1; j < n; j++)
            {
                if (input[j] < input[minId]) minId = j;
            }
            var temp = input[minId];
            input[minId] = input[i];
            input[i] = temp;
        }
    }
    public static int[] Main(int[] input)
    {
        SortSelection(input, input.Length);
        return input;
    }
}
        Elixier-Implementierung
defmodule Selection do
  def sort(list) when is_list(list) do
    do_selection(list, [])
  end
  def do_selection([head|[]], acc) do
    acc ++ [head]
  end
  def do_selection(list, acc) do
    min = min(list)
    do_selection(:lists.delete(min, list), acc ++ [min])
  end
  defp min([first|[second|[]]]) do
    smaller(first, second)
  end
  defp min([first|[second|tail]]) do
    min([smaller(first, second)|tail])
  end
  defp smaller(e1, e2) do
    if e1 <= e2 do
      e1
    else
      e2
    end
  end
end
Selection.sort([100,4,10,6,9,3])
|> IO.inspect
    
    
    
    
    
