[英]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.