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 :(


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

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();

17
var values = new int[] {5,7,3};
var sortedValues = values.OrderBy(v => v).ToList();   // result 3,5,7

12
List<int> list = new List<int> { 5, 7, 3 };  
list.Sort((x,y)=> y.CompareTo(x));  
list.ForEach(action => { Console.Write(action + " "); });

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);
            }
        }
    }

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);


    }



}

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();

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.