Partition a list of numbers into even and uneven numbers
Your naming for the array parameter 'a' is not good. Use something along the lines of input, input_array instead.

Also, rather than manually copying each element of the array in 

for (int i = 0; i &lt; a.length; i++){
    a[i] = tmp[i];
}


Use a = tmp.clone(); or a = Arrays.copyOf(tmp, tmp.length) 

Arrays.copyOf has slightly bette performance than clone, but both are much better than manually iterating through the array as you are doing. 

Also, rather than computing a.length each iteration you can use int size = a.length and then do for (int i = 0; i &lt; size; i++) for even better performance.