Probleme mit BinarySearch

kulturfenster

Grünschnabel
Guten Abend,
Ich habe eine binäre Suche geschrieben, die jedoch den gesuchten Wert im Array nicht finden will. Könnte jemand kurz einen Blick drauf werfen und mir n Tipp geben, was ich falsch gemacht habe?

Code:
package kap19;

public class BinarySearch8 {

	private int[] a;
	public BinarySearch8(int[] a)
	{
		this.a = a;
	}
	
	public int search(int k, int from, int to)
	{
		if(from > to) return -1;
		int mid = (from + to)/2;
		
		if(a[mid] > k) return search(k, from, mid-1);
		else if(a[mid] < k) return search(k,mid+1, to);
		else return mid;
	}
	
	public static void main(String[] args)
	{
		int länge = 1000;
		int[] a = new int[länge];
		java.util.Random g = new java.util.Random();
		for(int i = 0; i < länge; i++)
		{
			a[i] = g.nextInt(länge);
		}
		
		BinarySearch8 b = new BinarySearch8(a);
		System.out.println(b.search(555, 0, a.length-1));
	}
}

Vielen Dank für Tipps!
 
Deine Suche funktioniert schon ganz richtig. Allerdings benutzt du Zufallszahlen die in das zu suchende Array geschrieben werden. Und dann suchst du nach 555, aber die Zufallszahlen stellen ja nicht sicher dass die 555 überhaupt in dem Array enthalten ist.

Achso und hinzukommt dass das Array mit den Zufallszahlen dann nicht sortiert ist. Die Binäre Suche erfordert aber ein sortiertes Array.
 
Zuletzt bearbeitet:
Zurück