Przerobienie wyszukiwania binarnego

0

Cześć, chcę przerobić algorytm sortowania przez scalanie tak, by sprawdzał czy w podanej tablicy istnieją takie dwie liczby co dają v. Tylko, że nie wiem jak to zrobić. Kombinowałem głównie z else if, żeby zwracało prawdę kiedy w moim algorytmie v == A[p] + A [r], tylko że to nie chciało działać, a mam pomysłu co tu jeszcze można zmienić. Dlatego pytam jak to można zrobić?
Mój algorytm od którego zaczynałem go przerabiać:

int szukaj(int A[],int p,int r,int v){
	int wynik, q;
	if (p < r){
		q = (p + r - 1)/2;
		    if (v <= A[q]){
		        wynik = szukaj(A,p,q,v);
		    }
		    else{
		    	wynik = szukaj(A,p+1,r,v);
			} 
	}else if (v == A[p]){
		wynik = p;
	}	
	else{
		wynik = -1;
	}	
		    
	return wynik;
}
0

Sortowanie przez scalanie przyjmuje A - posortowana tablica, p - początek tablicy, r - koniec tablicy i v - to co chcemy znaleźć. Ja chcę to przerobić tak, by znalazło mi czy w tablicy istnieją dwa takie elementy, których suma daje v.

0

Raz nazywasz ten algorytm poprawnie czyli wyszukiwaniem binarnym, a raz niepoprawnie czyli sortowaniem przez scalanie.
Wątpie żeby dało się jakoś przerobić tą funkcję musisz napisać nową sprawdzająca wszystkie kombinacje. Możesz to zrobić za pomocą dwóch pętli for, jedna w drugiej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1