C# :: Aufgabe #203

4 Lösungen Lösungen öffentlich

Sortieralgorithmus (Konsole)

Anfänger - C# von syneex - 04.05.2018 um 10:44 Uhr
Guten Tag,

erstellen Sie ein Programm, welches ein Feld mit 10 Zufallszahlen (zwischen 1 und kleiner als 10) sortiert und ausgibt. Das Feld wird in der Main Methode deklariert und in einer anderen Methode mit Zufallszahlen gefüllt. Anschließend wird das unsortierte Feld ausgegeben. Danach soll das Feld sortiert und am Ende eben dieses sortierte Feld ausgegeben werden.

Todo:
- ZZ* erzeugen (Methode zz)
- unsortiertes Feld ausgeben (Methode ausgabe)
- Feld sortieren (Methode sort)
- sortiertes Feld ausgeben (Methode ausgabe)

Zusätzlich:
Man könnte eventuell die Länge des Arrays festlegen (siehe Anhang).
Ebenfalls könnte man die Ausgabe so formatieren, dass zwischen den einzelnen Zahlen jeweils ein kleiner Spielraum gelassen wird .
Um das ganze nun zu verfeinern, gäbe es die Möglichkeit die Zahlen Reichweite auf 1 - kleiner 100 zu erweitern.

*ZZ = Zufallszahl

Viel Erfolg :)

Lösungen:

vote_ok
von Exception (7090 Punkte) - 13.05.2018 um 10:54 Uhr
Quellcode ausblenden C#-Code
using System;

namespace Zahlen_Sortieren
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.BackgroundColor = ConsoleColor.DarkRed;
            Console.WriteLine("             ");
            Console.WriteLine("     Sort    ");
            Console.WriteLine("             ");
            Console.BackgroundColor = ConsoleColor.Black;
            Console.WriteLine();

            int[] numbers = getRandomNumber(setFieldLength(), 1, 100);

            Console.WriteLine();

            printField(numbers);

            numbers = sortField(numbers);

            printField(numbers);

            Console.ReadKey();
        }

        // hier wird die länge des arrays festgelgt, wobei die länge größer 0 sein muss.
        private static int setFieldLength()
        {
            int result;
            string s;

            do
            {
                Console.Write("Bitte Laenge des Feldes eingeben (groesser 0): ");
                s = Console.ReadLine();
            }
            while (!Int32.TryParse(s, out result) || result <= 0);

            return result;
        }

        // sortieren des feldes
        private static int[] sortField(int[] numbers)
        {
            Array.Sort(numbers);
            return numbers;
        }

        // ausgabe des feldes in der konsole
        private static void printField(int[] numbers)
        {
            string temp = "";

            foreach (int number in numbers)
            {
                temp += number + ", ";
            }

            Console.WriteLine("Field: " + temp.Substring(0, temp.Length-2));
        }

        // befüllen des feldes mit zufallszahlen
        private static int[] getRandomNumber(int length, int lower, int upper)
        {
            Random r = new Random();
            int[] temp = new int[length];

            for (int i = 0; i < length; i++)
            {
                temp[i] = r.Next(lower, upper);
            }

            return temp;
        }
    }
}

vote_ok
von daniel59 (4260 Punkte) - 14.05.2018 um 07:39 Uhr
Quellcode ausblenden C#-Code
using System;

namespace ConsoleBubbleSort
{
    class Program
    {
        static readonly Random rnd = new Random();
        static void Main(string[] args)
        {
            int[] array = CreateRandomArray();

            PrintArray(array);

            BubbleSort(ref array);

            PrintArray(array);

            Console.ReadLine();
        }

        static int[] CreateRandomArray(int min = 1, int max = 10, int length = 10)
        {
            int[] array = new int[length];

            for (int i = 0; i < length; i++)
            {
                array[i] = rnd.Next(min, max);
            }

            return array;
        }

        static void PrintArray<T>(T[] array, char seperator = ',')
        {
            for (int i = 0; i < array.Length - 1; i++)
            {
                Console.Write($"{array[i]}{seperator}");
            }

            Console.WriteLine(array[array.Length - 1]);
        }

        static void BubbleSort(ref int[] array)
        {
            for (int i = array.Length; i > 1; i--)
            {
                for (int j = 0; j < i - 1; j++)
                {
                    int l = array[j];
                    int r = array[j + 1];

                    if (r < l)
                    {
                        array[j] = r;
                        array[j + 1] = l;
                    }
                }
            }
        }
    }
}
vote_ok
von julian (140 Punkte) - 16.05.2018 um 16:17 Uhr
Simple Bubblesort:

Die Main
Quellcode ausblenden C#-Code
static void Main(string[] args)
        {
            Console.WriteLine("Anzahl der Zahlen eingeben: ");
            int countZahlen = Convert.ToInt32(Console.ReadLine());

            List<int> zufallszahlen = ZufallszahlenErstellen(countZahlen);
            zufallszahlen.ForEach(Console.Write);

            Console.WriteLine();

            List<int> sortierteListe = Sortieren(zufallszahlen);
            sortierteListe.ForEach(Console.Write);


            Console.ReadKey();

        }


Der Algorithmus zum erstellen von zufälligen Zahlen
Quellcode ausblenden C#-Code
static List<int> ZufallszahlenErstellen(int anzahl)
        {
            Random rnd = new Random();
            List<int> zufallszahlen = new List<int>();

            for(int i = 0; i < anzahl; i++)
            {
                zufallszahlen.Add(rnd.Next(0, 10));
            }

            return zufallszahlen;
        }


Der Sortieralgorithmus:
Quellcode ausblenden C#-Code
static List<int> Sortieren(List<int> unsortierteListe)
        {           
           for(int k = 0; k < unsortierteListe.Count; k++)
           {
                for(int i = 0; i < unsortierteListe.Count-1; i++)
                {
                    if(unsortierteListe[i] > unsortierteListe[i+1])
                    {
                        int save = unsortierteListe[i];
                        unsortierteListe[i] = unsortierteListe[i + 1];
                        unsortierteListe[i + 1] = save;                        
                    }                    
                }
            }

            return unsortierteListe;
        }

vote_ok
von JKooP (18090 Punkte) - 27.03.2020 um 10:05 Uhr
Hier eine Variante die nicht ganz der Aufgabenstellung entspricht,
da sie keine Methoden enthält, aber aufzeigt, wie man diese Aufgabe mittels LINQ
sehr schnell und komfortabel lösen kann.


Quellcode ausblenden C#-Code
using System;
using System.Linq;

namespace CS_Aufgabe_203_Sortieralgorithmus
{
    class Program
    {
        static void Main(string[] args)
        {
            // 10 Zufallszahlen von 1 bis 9
            var lstUnsorted = Enumerable.Range(1, 10).Select(x => new Random().Next(1, 9)).ToList();

            // Ausgabe: unsortierte Liste mit Abstand zwischen den Zahlen
            lstUnsorted.Select(x => x + " ").ToList().ForEach(Console.Write);

            // Zeilenumbruch
            Console.WriteLine();

            // Ausgabe: sortierte Liste mit Abstand zwischen den Zahlen 
            lstUnsorted.OrderBy(x => x).Select(x => x + " ").ToList().ForEach(Console.Write);
        }
    }
}