c#数组排序
本文关键字:数组排序 | 更新日期: 2023-09-27 18:05:41
我想订购一个数组。你可以比较两个对象,它们将返回-1(这意味着对象应该在那个对象之前),0对象是相同的或1,对象应该在数组中的那个对象之后。我已经查找了多种方法来订购一个数组,但无法找到一个解决方案。我希望有人能帮我解决这个问题。谢谢!
编辑:这是我尝试过的
public virtual void Add(NAW item)
{
_nawArray[ItemCount()] = item; //igonore this
for (int x = 0; x < _nawArray.Size; x++)
{
for (int y = 0; y < _nawArray.Size; y++)
{
if(_nawArray[x].CompareTo(_nawArray[y]) == 1){
//x should go on the place of y
} else if(_nawArray[x].CompareTo(_nawArray[y]) == -1){
//y should go on the place of x
}
}
}
}
ItemCount()获取数组中已使用位置的数量。但是当ObjectX进入ObjectY的位置时,我不能将ObjectX设置在ObjectY的位置上(除非我复制它,但这不是我需要的)。有人知道吗?
那就用Array.Sort
:
https://msdn.microsoft.com/en-us/library/cxt053xf (v = vs.110) . aspx
像这样:
MyType[] data = ...
...
Array.Sort(data, (left, right) => YourFunction(left, right));
如果你的意思是你想排序你的数组,你可以看看这个页面,它可能会帮助你:
https://msdn.microsoft.com/en-us/library/6tf1f0bc (v = vs.110) . aspx
Array.Sort(yourArrayNameHere)
您需要使用Array。排序(https://msdn.microsoft.com/en-us/library/6tf1f0bc (v = vs.110) . aspx)
Array.Sort(someArray)
但是你需要在你的类中实现接口IComparable (https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx)
的例子:
class IntHolder : IComparable<IntHolder>
{
public int SomeInt { get; set; }
public int CompareTo(IntHolder other)
{
return SomeInt.CompareTo(other.SomeInt);
}
}