簡體   English   中英

C# 插入排序列表(升序+降序)

[英]C# Insertion sort List (ascending + descending)

我正在 Unity 中開發一款游戲,c#。 我有一個包含 16k 個元素的大型 Vector3 列表,其中包含 x position、y 用於 dic 鍵和 z position。

該列表經常被排序,但該列表中只有 2750 個被排序,並且 rest 仍未排序。

現在我正在使用 linq 與 orderby 進行快速排序: list = list.OrderBy(x => x).ToList
但這不是我的情況的正確排序算法。

我不知道如何為 Cector3 列表實現插入排序。 只需使用簡單的 arrays 即可。 linq 中是否已經存在 Vector3 列表的插入排序(升序和降序)?

事實證明,插入排序更糟。

我就是這樣寫的:

    static void sortVec3Array(Vector3[] arrayToSort, int startAt, int stopAt)
{
    int i, j;
    for (i = startAt+1; i < stopAt; i++)
    {
        float item = arrayToSort[i].x;
        int ins = 0;
        for (j = i - 1; j >= 0 && ins != 1;)
        {
            if (item < arrayToSort[j].x)
            {
                arrayToSort[j + 1].x = arrayToSort[j].x;
                j--;
                arrayToSort[j + 1].x = item;
            }
            else ins = 1;
        }
    }
}

好吧,我遇到了 Tim Sort,這有點像我需要的。

我實現了它,它就像一個魅力。 Ms 就像 1.9,比.Orderby 算法快 3 倍,現在對我有用。

暫無
暫無

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

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