if (e < a[ret[1]]) { splitThree(ret[0],ret[1]-1,ret); } else { if (e < a[ret[2]]) { splitThree(ret[1],ret[2]-1,ret); } else { splitThree(ret[2],ret[3]-1,ret); } } Will become: final int offset = (e < a[ret[1]] ? 0 : (e < a[ret[2]] ? 1 : 2)); splitThree(ret[offset], ret[offset+1]-1, ret);