0
我有一個5000萬個Vector3的數組存儲在三個浮點數組中。我可以轉換爲Vector3類型的數組。如何對Vector3的位置數組從左到右進行排序?
我希望從低到高在C#在Y軸上對數組進行排序。擁有快速高效的流程將是一件好事。我找不到任何這種任務的具體例程,我缺少一些關鍵字來搜索?我必須寫一個例程嗎,有沒有準備好製作一個?
任何信息將是非常讚賞。謝謝。
我有一個5000萬個Vector3的數組存儲在三個浮點數組中。我可以轉換爲Vector3類型的數組。如何對Vector3的位置數組從左到右進行排序?
我希望從低到高在C#在Y軸上對數組進行排序。擁有快速高效的流程將是一件好事。我找不到任何這種任務的具體例程,我缺少一些關鍵字來搜索?我必須寫一個例程嗎,有沒有準備好製作一個?
任何信息將是非常讚賞。謝謝。
此使用數學歸檔排序方法的陣列版本解決:
如果數組的值是離散的,或者可以被舍入到小於一百萬個不同的值,它可以在第二完成1000萬個值陣列。
例如用於排序的Vector3的Z,它重寫頂點和法線數組,因此6個重寫條目:
function Zsort():IEnumerator{
yield WaitForFixedUpdate();
var countarr : int[] = new int[3000] ;
var loi = 0 ;
var hii = 0 ; print("z1sort"); WaitForFixedUpdate() ;
for (var i : int = 0; i < sortarr.Length ; i++)
{
sortarr [ i ] = 0; //Init sort arrays with zeros
stepsarr[ i ] = 0; //increment beginning of next section
countarr[ i ] = 0; //used for keeping track of where to write into section for every int
}print("z2sort"); WaitForFixedUpdate() ;
for ( i = 0; i < v1.Length-3 ; i+=3)
{
sortarr[ v1[i+2] ] += 1; // write all positions to sort arrays
}print("z3sort"); WaitForFixedUpdate() ;
var indexcount = 0;//used to accumulate index position 0,10,20,30 if all vals have 10 dupes
for ( i = 0; i < sortarr.Length ; i++)//
{
stepsarr[ i ] = indexcount; // write staircase section start positions
indexcount += sortarr [ i ];
} print("z4sort"); WaitForFixedUpdate() ;
for ( i = 0; i < v1.Length-3 ; i+=3)
{
v2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3 ] = v1[i ];
v2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3+1 ] = v1[i+1];
v2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3+2 ] = v1[i+2];
n2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3 ] = n1[i ];
n2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3+1 ] = n1[i+1];
n2[ stepsarr[ v1[i+2] ]*3 + countarr[ v1[i+2] ]*3+2 ] = n1[i+2];
countarr[ v1[i+2] ] += 1 ;
} print("z5sort"); WaitForFixedUpdate() ;
for ( i = 0; i < v1.Length ; i+=1)
{
v1[ i ] = v2[ i ];
n1[ i ] = n2[ i ];
} print("z6sort"); WaitForFixedUpdate() ;
}
使用了在該Y軸比較自定義比較陣列只是排序。內置'Array.Sort'函數已經相當快。另外,通過對數據源進行某種預處理,以預先排序的方式將數據插入到數組中是否可行? –
嗨,這些數據來自空間XYZ空間信息的線性掃描,它包含相當隨機的數據,我不得不重新排序它以便更快地分析它。當我編程合成器時,我們使用了振幅排序算法(稱爲氣泡排序)和那種類型,我會嘗試一些不同的搜索術語來查找一些自定義排序代碼。 –
我建議你嘗試了一個簡單的[的Array.Sort(陣列,IComparer的)](https://msdn.microsoft.com/en-us/library/aw9s5t8f(V = vs.110)的.aspx)和服務,如果性能足夠好。 –