Wie kann ich jetzt den Array sortieren? C# Lotto

Ich möchte in einer Konsolenanwendung Lotto 6 aus 45 simulieren.

Ich bin gerade dabei die 6 Zufallszahlen zu generieren und weiß nicht wie ich die Zahlen (in Array namens Lotto[]) sortieren kann.

Ich hab schon ein paar Sachen probiert aber ich krieg nichts zusammen.
Hoffe ihr könnts mir helfen

LG Fabi

Hier der Code.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Lotto2
{
class Program
{
static void Main(string[] args)
{
Random r = new Random();
int[] lotto = new int[6];

for (int i = 0; i

Hi Fabi,
ich würde den Insertion Sort verwenden.
Einfach vor dem Auslesen des Feldes einbauen bzw. als Methode aufrufen:

public static int[] insertionsort(int[]field)
{
for (int i = 1; i 1){
if(field[j-1] >= m){
field [j] = field [j-1];
j = j-1;
}
else break;
}
field[j] = m;
}
return field;
}

Ich hoffe, das beantwortet deine Frage. es gibt auch noch andere Sortieralgorithmen, aber diesen finde ich eigentlich ganz logisch.

LG,
Kristin

Nein ist mir leider nicht klar wie ich das einbauen sollen

Du hast ja deine Hauptmethode ‚static void main()‘, welche beim Starten ausgeführt wird. Innerhalb dieser Methode kannst du die Methode ‚public static int[] insertionsort(int[]field)‘.In deinem Fall würde ich einfach nach deiner 2. If-Anweisung
lotto = insertionsort(lotto);
einbauen. Insertionsort liefert ein sortiertes Integer-Feld zurück. Danach kannst du dann mit der For-Schleife die Ausgabe so stehen lassen.
Damit du die Methode aufrufen kannst, musst du sie aber noch in den Code einfügen. Einfach den Code von mir oben vor die vorletzte geschweifte Klammer einfügen. Dann sollte es fuunktionieren…
LG

Nein ist mir leider nicht klar wie ich das einbauen sollen

Hi,
einen zweiten temporären Array erzeugen. Den Array mit den unsortierten Zahlen in einer FOR-Schleife nach der jeweils kleinsten Zahl durchsuchen und in den neuen Array speichern.

Schneller ist natürlich der „BubbleSort“.

LG, Pohnlaner

Sorry, kenne mich mit C# nicht aus :smile:

Hallo Fabi,

eine einfache Möglichkeit ist dieses Array über die statische Methode Array.Sort zu sortieren.

Nach dem Aufruf ist der Inhalt des Arrays Lotto sortiert.
Ergänzter Quellcode:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Lotto2
{
class Program
{
static void Main(string[] args)
{
Random r = new Random();
int[] lotto = new int[6];

for (int i = 0; i Array.Sort(Lotto);

for (int i = 0; i

Danke an alle vorallem Odin.
Jetzt funktionierts.

Hallo Fabian,

Du musst nur die beiden nebeneinander stehenden Integer Werte in der Array vergleichen und demnach sortieren.

also in Pseudocode:

Solange ein wechsel möglich ist/war
kontrolliere, ob lotto[x] > lotto[x+1] (vergleiche
aber auch ende und anfang der array
wenn ja, dann tausche die beiden und markiere, dass
gewechselt wurde

Ich hoffe ich habe die Frage richtig verstanden.

viel Spaß
Florian

Sorry, sehr spät von dem Problem erfahren, aber vielleicht hilft’s auch anderen, wenn sie vor dem gleichen Problem stehen.

int[] lotto = new int[6];

In diesem Beispiel (bei umfangreicheren Arrays wäre es überdenkenswert) würde ich anstatt eines Integer-Arrays eine generische Liste verwenden. Also List, denn die stellt bereits eine Methode Sort() zur Verfügung. Also:

List lottoZahlen = new List();
int pseudoZufall;

while (lottoZahlen.Count p).ToArray();

Im Übrigen erzeugt Random() nicht wirklich eine Zufallszahl. Dahinter steckt eine mathematische Folge. Gibt bessere Klassen zur Erzeugung von derartigen Zahlen.