Vb.net / c# -从中点开始排序列表/数组

本文关键字:开始 排序 列表 数组 net Vb | 更新日期: 2023-09-27 18:09:13

是否有一种简单的方法来对从特定值开始的列表进行排序?

A B C D E F

我们可以从一个传入值开始比如'C'

C D E F A B

我想优化一个时间段列表,最好从开始时间开始排序,这样它就不需要迭代所有时间,

Vb.net / c# -从中点开始排序列表/数组

您可以使用:

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