我有多个数组,数组中的值需要逐列保持在一起。我想快速排序然后二进制搜索第一个数组,然后根据第一个数组上的搜索显示其他数组的所有值。但是,如果我对第一个数组进行排序,那么其他数组中的值就不再在正确的位置。
(例如,不是真实数据)未排序但正确的数据位置如下所示。
grades
当第一个数组被排序时,它应该是这样的。
SELECT m.student_id, m.class_id
FROM class_memberships m
WHERE m.class_id = 12 AND
NOT EXISTS (SELECT 1
FROM grades g
WHERE g.student_id = m.student_id AND g.class_id = m.class_id
);
然后如果搜索到2,它应该显示如下。
array1{5,2,3,1,4}
array2{6,9,1,7,8}
array3{2,4,1,5,4}
我的数组是双[]。
答案 0 :(得分:-1)
第一件事;这样的链接数组表明,如果以不同方式对问题进行建模,您可能会发现它更容易。例如,如果数组是x,y和x坐标,那么你可能最好使用这样的类;
public class Point3d { public int x; public int y; public int z; }
然后按x排序点数组;
Array.Sort(listOfPoints, (d1,d2) => d1.CompareTo(d2));
一般来说,像这样排列表明你实际上已经获得了垂直记录,而你的代码可能会受益于这样的处理。
答案 1 :(得分:-1)
{{1}}
实际上,拥有这本词典,你不需要对数组进行排序。它可以更快,因为构建字典是O(N)并且访问元素是O(1)(均摊销)。