Zähler in Suchprogramm einbinden
-
Wie kann ich zusätzlich anzeigen lassen, wieviel Suchschritte benötigt wurden?
Mein Ansatz wäre es gewesen, einen Counter, bei jedem Aufruf der While-Schleife um eins zu erhöhen und den Wert nachher auszugeben. Dafür benötige ich aber sicherlich einen Zeiger, oder kann ich der Funktion einen weiteren Ausgabewert zuweisen?
#include<stdio.h>
int binsearch(int x, int A[], int n);
int main()
{
int A[] = {2, 5, 9, 18, 23, 34, 36, 99};
int key;
int a=0;
int wert=0;printf("Bitte geben Sie die Zahl ein:\n");
fflush(stdin);
scanf("%d",&key);
wert=binsearch(key,A,7);if(wert==-1)
{
printf("Die Zahl wurde nicht gefunden");
}
else
{
printf("Der Index ist:%d",wert+1);
}
fflush(stdin);
getchar();
return 0;
}int binsearch(int x, int A[], int n)
{
int links, rechts, mitte;links = 0;
rechts = n - 1;while (links <= rechts)
{
mitte = (links + rechts) / 2;if (x < A[mitte])
rechts = mitte - 1;
else if (x > A[mitte])
links = mitte + 1;
else
return mitte;
}return -1;
}
-
Ja, dafür benötigst du einen Zeiger (bzw. eine Referenz, falls das Zählen der Suchschritte nicht optional sein soll).
Zwei Rückgabewerte kannst du mit Umweg über pair erreichen (pair<int,int>), ist aber in diesem Fall eher weniger angebracht.