Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何对向量数组进行排序3';从左到右是什么位置?_C#_Arrays_Sorting_Nearest Neighbor - Fatal编程技术网

C# 如何对向量数组进行排序3';从左到右是什么位置?

C# 如何对向量数组进行排序3';从左到右是什么位置?,c#,arrays,sorting,nearest-neighbor,C#,Arrays,Sorting,Nearest Neighbor,我有一个5000万矢量的数组,存储在一个三个浮点数组中。我可以在Vector3类型数组之间进行转换 我希望在Y轴上按C#从低到高对数组进行排序。最好有一个快速有效的流程。我找不到这类任务的任何特定例程,我是否缺少一些搜索关键字?我必须写一个例程吗?有现成的吗 任何信息都将不胜感激。谢谢。使用数学鸽子洞排序方法的数组版本解决了此问题: 如果数组值是离散的,或者可以四舍五入到少于一百万个不同的值,那么对于1000万个值数组,可以在一秒钟内完成 例如,对于矢量3的Z排序,它重写顶点和法线数组,因此有6

我有一个5000万矢量的数组,存储在一个三个浮点数组中。我可以在Vector3类型数组之间进行转换

我希望在Y轴上按C#从低到高对数组进行排序。最好有一个快速有效的流程。我找不到这类任务的任何特定例程,我是否缺少一些搜索关键字?我必须写一个例程吗?有现成的吗


任何信息都将不胜感激。谢谢。

使用数学鸽子洞排序方法的数组版本解决了此问题:

如果数组值是离散的,或者可以四舍五入到少于一百万个不同的值,那么对于1000万个值数组,可以在一秒钟内完成

例如,对于矢量3的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() ;


}
函数Zsort():IEnumerator{
收益率WaitForFixedUpdate();
var countarr:int[]=新int[3000];
var-loi=0;
var hii=0;打印(“z1sort”);WaitForFixedUpdate();
for(变量i:int=0;i
只需使用在Y轴上进行比较的自定义比较器对数组排序即可。内置的
Array.Sort
函数已经相当快了。此外,是否可以通过对数据源进行某种预处理,以预排序的方式将数据插入数组?嗨,数据来自空间X Y Z方向的空间信息线性扫描,其中包含相当随机的数据,我必须对其重新排序,以便更快地分析。当我在编写Synth时,我们有振幅排序数学,称为气泡排序之类的东西,我会尝试一些不同的搜索词来找到一些自定义排序代码。如果性能足够好,我建议您尝试一个简单的和ser。