Qualcuno mi saprebbe dire qual'è la complessità di spazio di questo algoritmo:

codice:
#include <stdio.h>
#include <malloc.h>

/* PROTOTIPO FUNZIONE */
void bin_search(int *A, int n, int chiave, int ris[3]);

/* PROGRAMMA CHIAMANTE */
main()
{
	/* DICHIARAZIONE VARIABILI */
	int *A, out[3], chiave;
	int i, c;
	int n, posiz;

	/* LETTURA ELEMENTI ARRAY */
	printf("Inserire il numero di elementi formanti l'array: ");
	scanf("%d",&n);

	/* ALLOCAZIONE DINAMICA DELLA MEMORIA */
	if(!(A = (int *)malloc(n*sizeof(int))))
	abort();

	/* LETTURA ELEMENTI ARRAY */
	printf("\n");
	for (i=0; i<=n-1; i++){
	printf("Inserire il valore dell'elemento %d: ", c=i+1);
	scanf("%d", &A[i]);
	}

	/* NUMERO DA RICERCARE */
	printf("\nInserire il numero che si desidera individuare: ");
	scanf("%d", &chiave);

	/* RICHIAMO FUNZIONE E STAMPA RISULTATO */
	bin_search(A, n, chiave, out);

	/* VERIFICO SE L’ELEMENTO E’ STATO TROVATO (ovvero se out[0]==1) */
	if(out[0]==1){
	        printf("\nIl valore %d è presente ed è l'elemento %d dell'array!\n", out[1], out[2]+1);}
	else {
        printf("\nIl valore %d non è presente nell'array!\n",out[1]);}

	/* RILASCIO DELLA MEMORIA OCCUPATA DALL’ ARRAY */
	free(A);
return 0;
}

/****************** SPECIFICHE FUNZIONE *************************/
void bin_search(int *A, int n, int chiave, int ris[3]) {
int alto, basso, centro, pos;
	alto = 0; 
	basso = n-1;
	pos = -1;
		do {
		centro = (alto+basso)/2;
			if (A[centro]==chiave)
				{pos = centro;}
			else if (A[centro]<chiave)
				{alto = centro+1;}
			else
				{basso = centro-1;}
			}
		while(alto<=basso && pos==-1);
if(pos!= -1){
	ris[0] = 1;
	ris[1] = chiave;
	ris[2] = pos; }
else {
	ris[0] = 0;
	ris[1] = chiave;
	}
}