Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.11 KB | None | 0 0
  1. class Sum extends RecursiveTask<Long>
  2. {
  3. static final int BlockSize = 5000;
  4. int start, end;
  5. int[] data;
  6.  
  7. Sum(int[] data, int start, int end)
  8. {
  9. this.data = data;
  10. this.start = start;
  11. this.end = end;
  12. }
  13.  
  14. protected Long compute()
  15. {
  16. /*
  17. Sorumluluk limitten küçükse direk hesapla yoksa alt görevlere dağıt ve
  18. bunu recursive olarak yinele
  19. */
  20. if (end - start <= BlockSize)
  21. {
  22. long sum = 0;
  23. for (int i = start; i < end; ++i)
  24. {
  25. sum = sum + data[i];
  26. }
  27. return sum;
  28. }
  29. else
  30. {
  31. // Sorumluluğu böl ve alt görevler oluşturarak onlara paylaştır.
  32. int mid = start + (end - start) / 2;
  33. Sum left = new Sum(data, start, mid);
  34. Sum right = new Sum(data, mid, end);
  35. left.fork();
  36. right.fork();
  37. long rightSum = right.join();
  38. long leftSum = left.join();
  39. return leftSum + rightSum;
  40. }
  41. }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement