簡體   English   中英

Vb.net / C#-從中點開始排序列表/數組

[英]Vb.net / C# - sort list/array starting from a mid point

有沒有一種簡單的方法可以對從特定值開始的列表進行排序?

ABCDEF

因此,我們可以從傳入的值“ C”開始

CDEFAB

我想優化一個時隙列表,最好從開始時間開始對順序進行排序,這樣就不需要遍歷所有不需要的時間。

您可以使用:

ArrayList.Sort(int index, int count, IEqualityComparer comparer)

此方法使用指定的比較器對ArrayList中的一系列元素進行排序。

參量

指數

類型:System.Int32要排序的范圍的從零開始的索引。

計數

類型:System.Int32

排序范圍的長度。

比較器

類型:System.Collections.IComparer比較元素時要使用的IComparer實現。

-要么-

一個空引用(在Visual Basic中為Nothing),以使用每個元素的IComparable實現。

此處有一個示例說明如何使用它。

ArrayList.Sort方法

如果您不知道如何實現平等比較器,也可以查看此帖子

更新:

從您的陣列中: ABCDEF

讓我們假設它在此對象中並被實例化:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM