Sortieren einer Liste <int>

76

Was ist der beste Weg, um eine Liste mit C # numerisch zu sortieren? Meine Liste enthält die Punkte 5,7,3 und ich möchte, dass sie 3,5,7 sortiert sind. Ich kenne einige längere Wege, aber ich würde mir vorstellen, dass linq einen schnelleren Weg hat?

Es tut mir leid, dass dies das Ende des Tages war. Meiner Meinung nach hat es anderswo funktioniert. Ich habe nicht gesehen, dass es sich beim ersten Mal geändert hat :(

Gespenster
quelle
Falls Ganzzahlen Zeichenfolgen sind, können Sie diesen großartigen Ansatz verwenden. Zootfroot.blogspot.com/2009/09/…
DmitryBoyko

Antworten:

159

Hier ist LINQ nicht erforderlich. Rufen Sie einfach Sortieren auf:

list.Sort();

Beispielcode:

List<int> list = new List<int> { 5, 7, 3 };
list.Sort();
foreach (int x in list)
{
    Console.WriteLine(x);
}

Ergebnis:

3
5
7
Mark Byers
quelle
2
Entschuldigung, Ende des Tages, ich habe es mir angesehen, bevor die Sortierung stattfand :( Zeit zu Hause, nehme ich an
Spooks
5
Ich kann keine Dokumentation finden, die besagt, dass sie in aufsteigender Reihenfolge sortiert ist. Bin ich nur paranoid, wenn ich sage, dass wir nicht davon ausgehen können, dass sie immer in aufsteigender Reihenfolge sein wird? Wer weiß, dass die Leute in 20 Jahren immer davon ausgehen werden, dass Abstieg sinnvoller ist, und diese Annahme wird das neue Jahr 2000 sein
TruthOf42
Tolle Lösung, aber schlechte Sache Sort () ist der Rückgabetyp void - daher nicht verkettbar ... Verwendet stattdessen die Antwort von @Will.
Jessica
37

Einfach zu halten ist der Schlüssel.

Versuchen Sie es unten.

var values = new int[5,7,3];
values = values.OrderBy(p => p).ToList();
Khizer Jalal
quelle
17
var values = new int[] {5,7,3};
var sortedValues = values.OrderBy(v => v).ToList();   // result 3,5,7
Wille
quelle
12
List<int> list = new List<int> { 5, 7, 3 };  
list.Sort((x,y)=> y.CompareTo(x));  
list.ForEach(action => { Console.Write(action + " "); });
Siva
quelle
8

Sortieren Sie eine Liste absteigender Ganzzahlen

class Program
    {       
        private class SortIntDescending : IComparer<int>
        {
            int IComparer<int>.Compare(int a, int b) //implement Compare
            {              
                if (a > b)
                    return -1; //normally greater than = 1
                if (a < b)
                    return 1; // normally smaller than = -1
                else
                    return 0; // equal
            }
        }

        static List<int> intlist = new List<int>(); // make a list

        static void Main(string[] args)
        {
            intlist.Add(5); //fill the list with 5 ints
            intlist.Add(3);
            intlist.Add(5);
            intlist.Add(15);
            intlist.Add(7);

            Console.WriteLine("Unsorted list :");
            Printlist(intlist);

            Console.WriteLine();
            // intlist.Sort(); uses the default Comparer, which is ascending
            intlist.Sort(new SortIntDescending()); //sort descending

            Console.WriteLine("Sorted descending list :");
            Printlist(intlist);

            Console.ReadKey(); //wait for keydown
        }

        static void Printlist(List<int> L)
        {
            foreach (int i in L) //print on the console
            {
                Console.WriteLine(i);
            }
        }
    }
DmitryBoyko
quelle
1
herausragendes Beispiel eines kundenspezifischen Komparators!
Fattie
4

Sortierliste von int absteigend Sie können einfach zuerst sortieren und umgekehrt

class Program
{
    static void Main(string[] args)
    {

        List<int> myList = new List<int>();

        myList.Add(38);
        myList.Add(34);
        myList.Add(35);
        myList.Add(36);
        myList.Add(37);


        myList.Sort();
        myList.Reverse();
        myList.ForEach(Console.WriteLine);


    }



}
Bartol Skeletaun
quelle
Sortierliste von int absteigend Sie könnten nur zuerst sortieren und rückwärts
Bartol Skeletaun
Es würde dem OP helfen, wenn Sie eine Erklärung geben würden, was Ihre Antwort ist / tut und wie es hilft, ihr Problem zu lösen. Fügen Sie Ihren Kommentar zu Ihrem Beitrag hinzu.
Trenton Tyler
0
double jhon = 3;
double[] numbers = new double[3];
for (int i = 0; i < 3; i++)

{
    numbers[i] = double.Parse(Console.ReadLine());

}
Console.WriteLine("\n");

Array.Sort(numbers);

for (int i = 0; i < 3; i++)
{
    Console.WriteLine(numbers[i]);

}

Console.ReadLine();
Jerry
quelle
1
Es wäre hilfreich, eine Erklärung zu geben, warum dies das Problem von OP beheben sollte.
Justin Wood
Während dieses Code-Snippet die Frage lösen kann, hilft eine Erklärung wirklich dabei, die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage in Zukunft für Leser beantworten und diese Personen möglicherweise die Gründe für Ihren Codevorschlag nicht kennen.
Nahuel Ianni