start + (end - start) / 2
Is preferred because there is a possibility in a very large array that the result from (start + end) could cause an integer overflow where the resulting value is larger than the max value for int. This would end up in a negative value, causing the index to be out of the bounds of the array.
it is same, m = (l+r)/2
you should know what it does, In array it takes the array indices and then it find the mid value on its basis we access the mid position's value.
let l = start, r = end, m = mid;
m = l + (r-l)/2 = l + r/2 - l/2 = l/2+r/2 = (l+r)/2.
That's how the fancy formula is straight forward written.