多维数组c#数字排序[关闭]

Posted

技术标签:

【中文标题】多维数组c#数字排序[关闭]【英文标题】:Multidimensional array c# number sort [closed] 【发布时间】:2021-09-27 01:33:39 【问题描述】:

我需要帮助以升序对多维数组进行排序。

所以如果输入是:

2 5 6 1 4
5 9 2 1 3
7 4 2 4 5
9 2 5 8 5

我需要输出:

1 1 2 2 2
2 3 4 4 4
5 5 5 5 5
6 7 8 9 9

这是我的迷你版应用,卡住了,不知道怎么搜索,也不知道怎么推送,希望大家帮忙。

这是我的代码:


        static void Main(string[] args)
        

            int row = 4;
            int column = 5;

            int[,] mas = new int[row, column];
            InitMas(mas);
            PrintMas(mas);

        
        static void InitMas(int[,] arr)
        
            Random rn = new Random();
            for (int i = 0; i < arr.GetLength(0); i++)
            
                for (int j = 0; j < arr.GetLength(1); j++)
                
                    arr[i, j] = rn.Next(10, 100);
                
            

        
        static void PrintMas(int[,] arr)
        

            for (int i = 0; i < arr.GetLength(0); i++)
            
                for (int j = 0; j < arr.GetLength(1); j++)
                
                    Console.Write(arr[i, j] + " | ");
                
                Console.WriteLine();
            

        

【问题讨论】:

我可以看到你的任务,但我找不到你尝试了什么?你忘了添加它吗?或者有什么问题?我们不是解决方案提供商。 我没有添加它,因为我删除了那部分,我来这里希望我得到帮助。 把你的 2dim 数组变成 1dim 数组,排序,再变成 2d。 如果您希望我们能够帮助您需要发布您的尝试,现在-> ***.com/questions/8866414/… 我们通过告诉您您做错了什么来帮助您,以便您可以更改它并解决您的问题。如果您没有做任何事情,我们无法告诉您您做错了什么。 【参考方案1】:

您可以展平您的数组,对一维数组进行排序,然后再次使其成为二维数组。但实际上,您的二维数组作为一维数组存储在内存中,编译器从行和列计算一维索引。因此,不需要先转换为一维,然后再转换为二维。如果使用指针,可以直接以一维的方式访问二维数组。尽管unsafe 代码(对于指针而言是必需的)在 C# 中并不常见,并且不应该在没有充分理由的情况下使用它,但您可以在这里获得一些性能。

这个例子只使用了冒泡排序,但它展示了这个想法:

public static unsafe void Sort(int[,] input)

    fixed(int* pointer = &input[0,0])
    
        for(int i = 0; i < input.Length; i++)
        
            for(int j = 0; j < input.Length - 1; j++)
            
                if(*(pointer + j) > *(pointer + j + 1))
                
                    int temp = *(pointer + j + 1);
                    *(pointer + j + 1) = *(pointer + j);
                    *(pointer + j) = temp;
                
            
        
    

【讨论】:

如何允许不安全的代码? ***.com/questions/50636693/… 或 ***.com/questions/2026410/… 我不会在不需要的地方建议不安全的代码。

以上是关于多维数组c#数字排序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中按升序对多维数组进行排序? [复制]

对数字和文本的多维对象数组进行排序

php 按最接近数字的值对多维数组进行排序

在AS3中对多维数组排序(数字)

ActionScript 3 在AS3中对多维数组进行排序(数字)

js数组排序,支持正反排序以及多维度排序