我有一个n = 32项的数组,具有正值和负值.前n/2个元素为正,按值排序,第二个n/2元素为负,并按值排序.我想按值对整个数组进行排序,从最小的负值到最大正值,这意味着如果有32个元素,则前16个(n/2)个排序元素应包含原始数组的后16个元素的值排序数组的第二个16个元素应包含原始数组的前16个值.
假设的例子:
double[] original = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, -16, -15, ..., -1};
double[] sorted = {-16, -15, ...., -1, 1, 2, ..., 16};
Run Code Online (Sandbox Code Playgroud)
有谁知道什么是移动元素从原始生成排序数组的最佳方法?
顺便说一下,这个数组绑定到另一个数组,该数组没有以相同的方式按大小排序的元素,并且必须以与原始相同的方式移位,因此数组不应按大小排序,必须移位.
所以你想要一个第二个数组,原始内容但是在位置移位?要么明确地做:
double[] result = new double[32];
for (int i=0; i < 32; i++)
{
result[(i+16)%32] = original[i];
}
Run Code Online (Sandbox Code Playgroud)
或使用Array.Copy两次:
double[] result = new double[32];
Array.Copy(original, 0, result, 16, 16);
Array.Copy(original, 16, result, 0, 16);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6166 次 |
| 最近记录: |