いずれにせよ、アプローチ1が良いです。この計算を参照してください。
n=2 および m=3 nlogn = 0.60、mlogm = 1.43、nlogn + mlogm = 2.03 (n+m)log(n+m) = 3.49
n=2 および m=30 nlogn = 0.60、mlogm = 44.31、nlogn + mlogm = 44.91 (n+m)log(n+m) = 48.16
n=2 および m=300 nlogn = 0.60、mlogm = 743.14、nlogn + mlogm = 743.74
(n+m)log(n+m) = 748.96
n=2 および m=3000 nlogn = 0.60、mlogm = 10,431.36、nlogn + mlogm =
10,431.96 (n+m)log(n+m) = 10,439.18
n=2 および m=30000 nlogn = 0.60、mlogm = 134,313.64、nlogn + mlogm =
134,314.24 (n+m)log(n+m) = 134,323.46
n=2 および m=300000 nlogn = 0.60、mlogm = 1,643,136.38、nlogn + mlogm = 1,643,136.98 (n+m)log(n+m) = 1,643,148.19
なぜなら、この背後にある明確な理由は次のとおりです。いずれにせよ、
(n+m) > n & (n+m) > m
log (n+m) >= log n
log (n+m) >= log m
一方、n=mの場合、
nlogn + mlogm = 2m logm
= log m (power of 2m)
(n+m) log(n+m) = 2m log (2m)
= log 2m (power of 2m)
and m(power of 2m) < 2m(power of 2m)
最初のアプローチを選択する唯一の単純な理由は、大きな大きな配列と比較して、データの小さな配列をソートする方が時間がかからないことです。