Сортування списку <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.