Hi,
ich steh vor einem kleinen Problem. Ich möchte einern binären Such-Algorithmus nach diesem Prinzip machen:
(Stammt von dieser Seite)
Mein Code sieht jetzt so aus: (Nicht der ganze Code, nur das Rechenverfahren)
Wenn ich das Programm starte und auf den Button zum ausrechnen drücke, hängt sich das Prog auf lastet meinen Prozessor zu 100% aus.
Liegt da ein fehler im Programmcode vor oder hab ich den Code von der Seite falsch interpretiert?
Hoffe, mir kann jemand helfen.
ich steh vor einem kleinen Problem. Ich möchte einern binären Such-Algorithmus nach diesem Prinzip machen:
Code:
1 while links ? rechts do
2 mitte := (links + rechts)/2 {Mitte bestimmen, Ergebnis runden}
3 if A[mitte] = Schluessel then return mitte
4 if A[mitte] > Schluessel then rechts := mitte-1
5 if A[mitte] < Schluessel then links := mitte+1
6 endwhile
7 return "nicht gefunden"
Mein Code sieht jetzt so aus: (Nicht der ganze Code, nur das Rechenverfahren)
Code:
int[] entrys;
entrys = new int[500];
int entryCounter = 0;
for(int i = 0; i < entrys.length;i++){
entrys[entryCounter] = entryCounter;
entryCounter++;
}
int anzahlI = 0;
int keyI = 0;
String anzahlS = "";
String keyS = "";
String returnRes = "";
int leftI = 1;
int rightI = entrys.length;
anzahlS = jTextField1.getText();
anzahlI = Integer.parseInt(anzahlS);
keyS = jTextField2.getText();
keyI = Integer.parseInt(keyS);
int mitte = (leftI + rightI)/2;
while(leftI < rightI){
if(entrys[mitte] == keyI){
returnRes = "";
returnRes += mitte;
jTextArea1.setText(returnRes);
break;
} else if (entrys[mitte] > keyI) {
rightI = mitte-1;
} else if (entrys[mitte] < keyI) {
leftI = mitte+1;
}
}
Wenn ich das Programm starte und auf den Button zum ausrechnen drücke, hängt sich das Prog auf lastet meinen Prozessor zu 100% aus.
Liegt da ein fehler im Programmcode vor oder hab ich den Code von der Seite falsch interpretiert?
Hoffe, mir kann jemand helfen.