在C++中平衡2d数组

Balancing out 2d array in C++

本文关键字:2d 数组 平衡 C++      更新时间:2023-10-16

所以我需要对一个2d数组进行排序。不幸的是,std::sort()不是一个选项。

我有一个int array[3][4],我必须将int array[12]中的值插入其中。我应该"平衡"列,使每列的值几乎相等,或者至少尽可能接近它。

最后,它应该看起来有点像这样:

Tier 4:   8|11|12
Tier 3:   5|10|9
Tier 2:   4|6|7
Tier 1:   3|2|1

对初始数组进行排序;您确实有初始数组[12]。然后将它们插入到二维阵列中。

对1D数组(arr1[12])进行排序,然后在2d数组(arr2[3][4])中插入元素,方法类似于。。。从左到右填充第一行,然后从右到左填充第二行,然后左到右填写第三行。。。等等

逻辑如下:

// Let's say the int arr1[12] is the sorted one
int flag = 0, c = 0;
for(int i =0; i < 4; ++1) {
    if( (1+1)%2 == 0) {
        c = 2;
        flag = 1;
    }
    else {
        flag = 0;
    }
    for(int k = 0; k < 3; ++k) {
        if(flag) {
            arr2[i][c] = arr1[n++];
            --c;
        }
        else {
            arr2[i][k] = arr1[n++];
        }
    }
}