BinarySearch.java 880 Bytes
Newer Older
91pida1bif's avatar
91pida1bif committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package org.hft.dsa;

import java.util.Optional;

import model.Person;
import model.Reader;

public class BinarySearch  implements Search{
	
	static Person[] suchmenge;

	@Override
	public void initialize() {
		suchmenge = Reader.getSortedSample();
		
	}

	@Override
	public  Optional<Person> lookup(final String key) {
		return suche(suchmenge, key, 0, suchmenge.length - 1);
	}
	
	
	
	
	 public Optional<Person> suche(final Person[] s, final String key, 
			final int links,final  int rechts){
			if(links > rechts) {
			return Optional.empty();} // nichts gefunden
			int mitte = (links + rechts)/2;
			if(s[mitte].equals(key) ) {
91pida1bif's avatar
91pida1bif committed
32
			return (mitte);} // gefunden
91pida1bif's avatar
91pida1bif committed
33
34
35
36
37
38
39
40
41
42
43
			if(s[mitte].getKey().compareTo(key) > 0) {
			return suche(s, key, links, mitte - 1);	
			}
			
			else {
				return suche(s, key, mitte + 1, rechts);
			}
			
			}

}