排序列表<int>


76

使用C#进行数字排序的最佳方法是什么?我的清单中有项目5,7,3,我希望将其排序为3,5,7。我知道一些更长的方法,但是我想linq有更快的方法吗?

抱歉,这是一天的结束,我的主意是它在其他地方起作用,第一次没有看到它改变:(


在情况下,如果整数是字符串,你可以使用这个伟大的方法zootfroot.blogspot.com/2009/09/...
DmitryBoyko

Answers:


159

这里不需要LINQ,只需致电Sort:

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

很好的解决方案,但不好的是Sort()返回的类型为void-不可链接,因此...而是使用@Will的答案。
杰西卡


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


    }



}

对int降序的排序列表,您可以仅按顺序排序,然后反向排序
Bartol Skeletaun

如果您要解释答案是什么/做了什么以及如何帮助解决他们的问题,这将对OP有所帮助。将您的评论添加到您的帖子中。
特伦顿·泰勒

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
解释为什么这应该解决OP的问题将很有帮助。
贾斯汀·伍德

尽管此代码段可以解决问题,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。
Nahuel Ianni '17
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.