nachtfrost23
Lieutenant
- Registriert
- März 2008
- Beiträge
- 644
Hi, ich versuche gerade eine Interpolationssuche einzubauen, doch die Funktion, zum errechnen der nächsten Suchposition, gibt immer "0" zurück.
Aufruf der Funktion:
Hiermir, will ich erst mal grundsätzlich testen, ob die Funktion funktioniert.
Deswegen wird a, also die neue Position, ausgegeben.
Die besagte Funktion:
k=gesuchte Zahl
ug=erste, noch zu durchsuchende, Stelle (am Anfang 0)
og=letzte, noch zu durchsuchende, Stelle (bei einem 200-stelligem Array am Anfang eben 200)
array=der Array mit den Zahlen
Der komplette Code:
Wenn ich noch etwas erklären muss, gebt mir einfach kurz Bescheid.
Danke schonmal
Gruß, nachtfrost
Aufruf der Funktion:
Code:
int a=neuerort(suchzahl, ug, og, zahlen);
Console.WriteLine(a);
Deswegen wird a, also die neue Position, ausgegeben.
Die besagte Funktion:
Code:
public static int neuerort(int k, int ug, int og, int[] array)
{
int pos;
pos=(ug+((k-array[ug])/(array[og]-ug))*(og-ug));
return pos;
}
k=gesuchte Zahl
ug=erste, noch zu durchsuchende, Stelle (am Anfang 0)
og=letzte, noch zu durchsuchende, Stelle (bei einem 200-stelligem Array am Anfang eben 200)
array=der Array mit den Zahlen
Der komplette Code:
Code:
class Program
{
public static void Main(string[] args)
{
Random zahl=new Random();
int anzahl;
int [] zahlen;
Console.WriteLine("Geben Sie ein, wie viele Zahlen sie durchsuchen möchten.");
anzahl=int.Parse(Console.ReadLine());
zahlen=new int[anzahl+1];
for(int i=0; i<(anzahl+1); i++)
{
zahlen[i]=i;
}
Console.WriteLine(zahlen[0]+"+"+zahlen[anzahl]);
Console.WriteLine("Welche Zahl möchten Sie suchen?");
int suchzahl=int.Parse(Console.ReadLine());
if(suchzahl<=anzahl)
{
Console.WriteLine("Möchten Sie die Interpolationssuche [1] oder die Serielle Suche [2] verwenden?");
int suche=int.Parse(Console.ReadLine());
if(suche==1)
{
int gefunden=0;
int ug=0, og=anzahl;
while(gefunden==0)
{
int a=neuerort(suchzahl, ug, og, zahlen);
Console.WriteLine(a);
gefunden=1;
}
}
}
Console.Write("Press any key to exit . . . ");
Console.ReadKey(true);
}
public static int neuerort(int k, int ug, int og, int[] array)
{
int pos;
pos=(ug+((k-array[ug])/(array[og]-ug))*(og-ug));
return pos;
}
Wenn ich noch etwas erklären muss, gebt mir einfach kurz Bescheid.
Danke schonmal

Gruß, nachtfrost
Zuletzt bearbeitet: