Vb.net / c# -从中点开始排序列表/数组
本文关键字:开始 排序 列表 数组 net Vb | 更新日期: 2023-09-27 18:09:13
是否有一种简单的方法来对从特定值开始的列表进行排序?
A B C D E F
我们可以从一个传入值开始比如'C'
C D E F A B
我想优化一个时间段列表,最好从开始时间开始排序,这样它就不需要迭代所有时间,
您可以使用:
ArrayList.Sort(int index, int count, IEqualityComparer comparer)
该方法使用指定的比较器对数组列表中一组元素中的元素进行排序。
参数类型:系统。Int32要排序的范围的从零开始的索引。
数类型:系统。Int32
要排序的范围的长度。
与
Type: System.Collections.IComparer要使用的IComparer实现
或者
使用icomable的空引用(在Visual Basic中没有)每个元素的实现。
这里有一个例子解释如何使用它。
ArrayList。排序方法
如果你不知道如何实现相等比较器,你也可以查看这篇文章
更新:
From your array: A B C D E F
让我们假设它在这个对象中并且它被实例化了:
List<string> array;
你可以这样写:
public List<string> foo(List<string> array, int i) {
array.Sort(i, array.size() - i, null);
List<string> aux = array.Skip(i).Take(array.Size() - i );
aux.AddRange(array.Take(i));
return aux;
}
你可以这样称呼它:
List<string myNewArray = foo(array, 2);
static void Main(string[] args)
{
char[] z = new char[] { 'B', 'C', 'F', 'A', 'D', 'E' };
Array.Sort(z);
char[] x,y;
Split<char>(z, 2, out x, out y);
char[] combined = y.Concat(x).ToArray ();
}
public static void Split<T>(T[] array, int index, out T[] first, out T[] second)
{
first = array.Take(index).ToArray();
second = array.Skip(index).ToArray();
}