提问人:newbie 提问时间:9/9/2022 最后编辑:Theodor Zouliasnewbie 更新时间:9/12/2022 访问量:177
所以我尝试在不使用 C# 中的 sort 函数的情况下按升序对列表进行排序,而且我有点新,所以我想知道我该怎么做?[复制]
So I'm trying to sort the list in ascending order without using the sort function in C# and I'm a bit new so I was wondering how could I do it? [duplicate]
问:
namespace Activity4
{
class Worksheet4
{
static void Main(string[] args)
{
//I'm limiting the user input to just 5
List<int> Nums = new List<int>();
while (Nums.Count < 5)
{
Console.Write("Enter the 1st number:");
int Nums1 = Convert.ToInt32(Console.ReadLine());
Nums.Add(Nums1);
Console.Write("Enter the 2nd number:");
int Nums2 = Convert.ToInt32(Console.ReadLine());
Nums.Add(Nums2);
Console.Write("Enter the 3rd number:");
int Nums3 = Convert.ToInt32(Console.ReadLine());
Nums.Add(Nums3);
Console.Write("Enter the 4th number:");
int Nums4 = Convert.ToInt32(Console.ReadLine());
Nums.Add(Nums4);
Console.Write("Enter the 5th number:");
int Nums5 = Convert.ToInt32(Console.ReadLine());
Nums.Add(Nums5);
这是我真的不知道如何在不使用 sort 函数的情况下按升序对其进行排序的部分,如果有一种更简单的方法可以让我单独识别每个输入哪个更低或不低,请启发我
foreach (int x in Nums)
{
Console.WriteLine(x);
}
}
}
}
}
答:
0赞
Tim Schmelter
9/9/2022
#1
你可以使用 的 OrderBy
:LINQ
var sortedAscending = Nums.OrderBy(n => n);
foreach(int num in sortedAscending)
{
Console.WriteLine(x);
}
如果想要相反的方向,请使用 。OrderByDescending
这两种方法都不会创建新集合,也不会修改 source-collection。它们使用延迟执行,这意味着它们只是执行排序的指令,而不是实际的排序。如果要创建新集合,可以附加 或 。ToList
ToArray
它们使用稳定的排序(与 List.Sort
不同),因此相等数字的顺序将保持不变。
0赞
Darshan Faldu
9/9/2022
#2
如果您不想使用任何函数,这里有一个简单的逻辑。Sort
OrderBy
List<int> UnSortedNums = new List<int>();
UnSortedNums.Add(20);
UnSortedNums.Add(50);
UnSortedNums.Add(10);
UnSortedNums.Add(10);
UnSortedNums.Add(30);
List<int> AscendingNums = new List<int>();
for (int i = 0; i < UnSortedNums.Count; i++)
{
if(UnSortedNums.Any(x => !AscendingNums.Contains(x)))
{
int Min = UnSortedNums.Where(x => !AscendingNums.Contains(x)).Min();
int Count = UnSortedNums.Where(x => x == Min).Count();
for (int j = 0; j < Count; j++)
{
AscendingNums.Add(Min);
}
}
}
评论
0赞
Klaus Gütter
9/9/2022
如果一个数字多次出现,这将无法正常工作。它看起来像复杂度 O(N^3),它比几乎所有常见的算法(慢排序除外)都差
评论