Сортування списку <int>


79

За допомогою C # який найкращий спосіб сортувати список чисельно? мій список містить елементи 5,7,3, і я хотів би, щоб вони були відсортовані 3,5,7. Я знаю декілька довших шляхів, але я думаю, linq має швидший шлях?

вибачте, це був кінець дня, мій розум там, де це працювало, не бачив, як це змінилося з першого разу :(


Якщо цілі числа є рядками, ви можете скористатися цим чудовим підходом zootfroot.blogspot.com/2009/09/…
DmitryBoyko

Відповіді:


162

Тут немає потреби в LINQ, просто зателефонуйте Сортувати:

list.Sort();

Приклад коду:

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

Результат:

3
5
7

2
вибачте, кінець дня, я переглядав його до того, як відбувся сорт :( додому, мабуть
Spooks

5
Я не можу знайти жодної документації, в якій говориться, що вона сортується за зростанням, чи я просто параноїк, кажучи, що ми не можемо припустити, що вона завжди буде у порядку зростання? Хто знає, можливо, через 20 років люди завжди вважатимуть, що спадання має більше сенсу, і це припущення буде новим y2k
TruthOf42,

Чудове рішення, але погана річ Sort () - це тип повернення void - тому не можна застосувати до мережі, тому ... Використовується відповідь @Will s.
Джессіка


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

Відсортуйте список цілих чисел за спаданням

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
видатний приклад спеціального компаратора!
Fattie,

4

Список сортування за спаданням int можна просто сортувати першим та зворотним

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


    }



}

Список сортування за спаданням, який ви можете просто відсортувати першим і зворотним
Бартол Скелетаун

Це допомогло б ОП, якби ви дали пояснення щодо того, що є / робить ваша відповідь та як це допомагає вирішити їх проблему. Додайте свій коментар до вашого допису.
Трентон Тайлер

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
Було б корисним пояснити, чому це повинно вирішити проблему ОП.
Джастін Вуд,

Незважаючи на те, що цей фрагмент коду може вирішити питання, включення пояснення дійсно допомагає поліпшити якість вашої публікації. Пам’ятайте, що ви будете відповідати на запитання для читачів у майбутньому, і ці люди можуть не знати причин вашої пропозиції коду.
Nahuel Ianni
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.