
10.01.2010, 19:13
|
|
Постоянный
Регистрация: 06.06.2007
Сообщений: 575
Провел на форуме: 1180737
Репутация:
180
|
|
ну бинарный поиск работает только при упорядоченном массиве, после прогулки на улице, написал вот это
Код:
int bin_find_mm(int *, int, int ,int, int);
/*
* Рекурсивная функция поиска позиции q, такой что
* A[q-1] < x < A[q]
* возвращает q
*/
int main(){
int mas[7]={1,4,6,7,10,16,23};
cout<<bin_find_mm(mas, 0, 6, 24, 7)<<endl;
}
int bin_find_mm(int *A, int p, int r, int x, int minq){
int temp = minq;
if (p <= r){
int q = (p+r)/2;
if (x < A[q])
temp = bin_find_mm(A, p, q-1, x, q);
else if (x > A[q])
temp = bin_find_mm(A, q+1, r, x, minq);
else
return q;
}
if (temp < minq)
return temp;
else
return minq;
}
проверил несколько раз, на листочке посчитал ручками, вроде работает. Может можно лучше сделать ?
|
|
|