【发布时间】:2020-02-14 11:14:58
【问题描述】:
给定两个数组
a = [1,3,2,8,5,6]
b = [4,3,2,5,1,2]
我想在“逻辑”涉及两个数组的“单程”中对它们进行排序,意思是:
如果
int sortBySum(index i, index j){
if (a[i]+b[i] > a[j]+b[j]){
return 1;
}
return -1;
}
两个数组的输出将是
a = [2,1,3,5,6,8]
b = [2,4,3,1,2,5]
因为原来的arrays sum是a+b=[5,6,4,13,6,8]
【问题讨论】:
-
@TanveerBadar 不同意此处使用“任何代码”这一短语。我认为我们应该在澄清时对 OP 有礼貌。
-
OP,请在您调用
sortBySum()的位置添加代码以及您如何处理这些返回值1和-1? -
@DsCpp 最简单的方法是编写自己的排序函数,例如使用冒泡排序方法。在这种情况下,无需创建额外的数组。
-
使用任何排序算法并使其适应您对两个数组的使用和您的比较函数。如果足以对索引数组进行排序而不是对两个数据数组进行排序,或者将两个数组替换为结构数组
struct { int a; int b } array[] = { {1, 4}, {3, 3}, {2, 2}, ... };,则可以使用qsort库函数