我的目标是仅对2D数组中的第一个元素执行二进制搜索。我整天都在搜索以查找是否可以在.NET中使用BinarySearch(),但找不到任何东西。

使其更清楚。想象一下,我有一个未排序的1D数组。如果对数组进行排序,则会丢失原始索引。我想在数组的第二个元素中保存原始索引(我可以做到),然后按第一个元素排序,然后对第一个元素进行二进制搜索。

如果有人能向正确的方向推动我,我将不胜感激。
谢谢

最佳答案

好吧,如果我对您的理解正确,则您需要以下内容:

// initialize the array and the indexes array
var a2D = new int[2][];
a2D[0] = new[] { 3, 14, 15, 92, 65, 35 }; // <-- your array (fake data here)
a2D[1] = Enumerable.Range(0, a2D[0].Length).ToArray(); // create the indexes row

// sort the first row and the second one containing the indexes
Array.Sort(a2D[0], a2D[1]);

// now a2D array contains:
//  row 0: 3, 14, 15, 35, 65, 92
//  row 1: 0,  1,  2,  5,  4,  3

// and you can perform binary search on the first row:
int columnIndexOf35 = Array.BinarySearch(a2D[0], 35);
// columnIndexOf35 = 3
//
// a2D[0][columnIndexOf35] = 35 <- value
// a2D[1][columnIndexOf35] = 5  <- original index

关于c# - 在多维数组中的第一个元素上进行二进制搜索,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11831329/

10-11 00:59