Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
!1-25.doc
Скачиваний:
8
Добавлен:
28.10.2018
Размер:
2.62 Mб
Скачать

20.4 Параметризованная функция бинарного поиска в массиве

#include <iostream.h>

template <class Stype> int binary_search( Stype *item, int count, Stype key);

int main ()

{

char str[]="acdefg";

int nums[] = { 1, 5, 6, 7, 13, 15, 21 };

int index;

index = binary_search( str, (int)sizeof(str), 'd' );

if (index>=0)

cout << "Найдено совпадение в позиции: " << index << endl;

else

cout << "Совпадение не найдено\n";

index = binary_search(nums, 7, 21);

if (index>=0)

cout << "Найдено совпадение в позиции: " << index << endl;

else

cout << "Совпадение не найдено\n";

return 0;

}

template <class Stype> int binary_search( Stype *item, int count, Stype key)

{

int low=0, high = count-1, mid;

while ( low<= high ) {

mid = ( low + high) /2;

if ( key < item[mid] ) high = mid - 1;

else if (key>item[mid]) low = mid+1;

else return mid; // совпадение

}

return -1;

}

20.5 .

A

B

C

a

1

P

b

2

Q

c

3

R

d

4

S

1 R1 \/ R2

переименование атрибутов R2.D=R1.A

A

B

C

a

1

P

b

2

Q

c

3

R

d

4

S

5

2

q

6

3

r

7

1

P

Select * from R1 UNION select * from R2

2.R1 |X|R2

R1A

R1B

R1C

R2B

R2C

R2D

a

1

P

2

q

5

b

2

Q

2

q

5

c

3

R

2

q

5

d

4

S

2

q

5

a

1

P

3

r

6

b

2

Q

3

r

6

c

3

R

3

r

6

d

4

S

3

r

6

a

1

P

1

P

7

b

2

Q

1

P

7

c

3

R

1

P

7

d

4

S

1

P

7

A

B

C

D

a

1

P

7

b

2

Q

5

c

3

R

6

3.П A,C (G B>=3 /\ D<=6(R1 |X| R2))

G B>=3 /\ D<=6(R1 |X| R2)

R1A

R1B

R1C

R2B

R2C

R2D

c

3

R

3

r

6

d

4

S

3

r

6

П A,C (G B>=3 /\ D<=6(R1 |X| R2))

R1A

R1C

R2C

c

R

r

d

S

r

Select distinct R1.A,R1.C,R2.C From R1,R2 where R1.B>=3 And R2.B>=3 And R2.D<=6

G B>=3 /\ D<=6(R1 |X| R2)

A

B

C

D

c

3

R

6

П A,C (G B>=3 /\ D<=6(R1 |X| R2))

A

C

c

R