多维数组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#数字排序[关闭]的主要内容,如果未能解决你的问题,请参考以下文章