خرید بک لینک

سلام

این یه تابعه که می خواد تعداد عناصری که توی یک آرایه به ترتیب بر عکس قرار دارند را پیدا کنه. حالا هدفش خیلی مهم نیست. لطفا این کد رو ببینین:

private void findInversions(int begin, int end, int count) {
if (end - begin < 1)
retu;
int middle = (begin + end) / 2;
findInversions(begin, middle, count);
System.out.println("count: " + count + " CHERA????");
findInversions(middle + 1, end, count);
count = mergeAndCount(begin, middle, end, count);
}

private int mergeAndCount(int begin, int middle, int end, int count) {

int[] result = new int[end - begin + 1];
int aptr = begin;
int bptr = middle + 1;
for (int i = 0; i < result.length; i++) {
if (aptr <= middle && bptr <= end) {
if (numbers[aptr] < numbers[bptr]) {
result[i] = numbers[aptr];
aptr++;
}
else {
// (a[aptr], b[bptr]) is an inversion here
count++;
System.out.println("PAYDA SHOD: (" + numbers[aptr] + "," + numbers[bptr] + "). VALI COUNT MEGHDARESH GHALATE: " + count);
result[i] = numbers[bptr];
bptr++;
}
}
else if (aptr > middle) {
result[i] = numbers[bptr];
bptr++;
}
else if (bptr > end) {
result[i] = numbers[aptr];
aptr++;
}

}

for (int i = 0; i < result.length; i++) {
numbers[begin + i] = result[i];
}

retu count;

}

من هم خود count رو به عنوان آرگومان پاس می دم و هم retuش می کنم. با توجه به این که جاوا خود اصل متغیر رو تغییر می ده (مگه نه؟) چرا مقدار count وقتی از اجراهای مختلف تابع بازگشتی بیرون می یایم همون مقدار قبلیشه و تغییر نکرده؟

ممنون

برچسب: نویسنده: محمد رضا جوادیان تاريخ: يکشنبه 19 ارديبهشت 1395 ساعت: 19:39

صفحه بندی