.


:




:

































 

 

 

 





, , . log2n, n . , , (n) = log2n.

2 . , . , -. . , , (, ).

, . 1.

1. ().

2.

.

3. .

( ) . . .

.

1.1. (n).

1.2. .

1.3. (i) 0 n

1.3.1. [i].

2. :

2.1. (k) 1 n - 1

2.1.1. (i) 0 n - k

[ i ] > [ i +1],

[i] [i+1].

3.

3. 1. ( );

3. 2. ,

3.2.1 _ ( ) = 0;

3.2.2. _ ( ) = n - 1 (. 1);

3.2.3. = [ n - 1],

a) = ;

b) k = n 1.

3.2.4. = .

3.2.5.

a) k = ((_ + _)/2);

b) = [ k ],

:=

> [ k ],

_ = k

_ = k.

(_ = _ - 1).

3.3. ,

: k,

: .

.

4. .

3.2.3 . , 2 , 1 , .

, . 0 99. , , .

 

public static void main (String[] args) {

Scanner sc=new Scanner(System.in);

int n;

System.out.print(" => ");

n=sc.nextInt();

System.out.println("\t ");

int key[]=new int[n];

Random rn=new Random();

for (int i = 0; i < key.length;i++) {

key[i]=rn.nextInt(100);

System.out.print(key[i] + ); }

 

System.out.println("\n ");

int lev, prav, k;

boolean naideno;

do{

int arg,num;

System.out.println("\n ");

arg=sc.nextInt();

if (arg>=0){

num=-1;

if arg==key[n-1] {

k=n-1;

naideno=true; }

else {

naideno=false;

do {

k=(int)((lev+prav)/2);

if (arg==key[k])

naideno=true;

else

if (arg>key[k])

lev= k;

else

prav= k;

} while (!naideno || (lev==prav-1));

}

if (naideno)

System.out.println(" , "+ k);

else

System.out.println(" ");

 

} while (arg>=0);

}

 


2.2.





:


: 2016-03-28; !; : 853 |


:

:

.
==> ...

1661 - | 1492 -


© 2015-2024 lektsii.org - -

: 0.01 .