Insertion Sort binário iterativo e recursivo

Preciso fazer um Binary Insertion Sort iterativo e recursivo. O iterativo em consegui, mas não sei bem como fazer a recursiva.

public static void binInsertSort(Integer[] arr) {
for (int i = 1; i < arr.length; i++) {

  	int temp = arr[i];

  	int ini = 0;
  	int fim = i - 1;

  	while (ini <= fim) {
  		int meio = (ini + fim) / 2;
  		if (temp < arr[meio]) {
  			fim = meio - 1;
  		} else {
  			ini = meio + 1;
  		}
  	}
  	for (int j = i - 1; j > fim; j--) {

  		arr[j + 1] = arr[j];
  	}

  	arr[fim + 1] = temp;
  }

}