Scusate ancora, ma credo che avere tutto il programma possa rendere
più facile capire come funziona il mio algoritmo, così potete vedere
come ho settato le variabili ecc
#include <stdio.h>
#define MAX 20
#define true 1
#define false 0
void inserisci (int array[], int n) {
int count;
for (count=0; count<n; count++) {
printf ("\nInserisci l'elemento numero %d: ", count+1);
scanf ("%d", &array[count]);
}
}
void bubblesort (int array[], int n) {
void stampa (int array[], int n);
int scambio, count, temp, inizio=0, fine=MAX-1;
do {
scambio=false;
for (count=inizio; count<fine; count++) {
if (array[count+1]<array[count]) {
scambio=true;
temp=array[count+1];
array[count+1]=array[count];
array[count]=temp;
}
}
} while (scambio);
stampa (array, n);
}
void binsearch (int array[], int n, int inizio, int medio, int fine, int key) {
int pivot, ipivot;
ipivot=medio; pivot=array[ipivot];
if ((key>=array[inizio]) && (key<=array[fine])) {
if (key==pivot)
printf ("\nElemento %d trovato in array [%d]\n", key, pivot-1);
else if (key<pivot) {
n=n/2;
medio=inizio+((ipivot-inizio)/2);
fine=ipivot-1;
binsearch (array, n, inizio, medio, fine, key);
}
else {
inizio=ipivot+1;
fine=n;
medio=inizio+((fine-inizio)/2);
binsearch (array, n, inizio, medio, fine, key);
}
}
else
puts ("\nValore non trovato\n");
}
void stampa (int array[], int n) {
int count;
for (count=0; count<n; count++)
printf ("%d\t", array[count]);
}
main() {
int array[MAX], n=MAX, inizio=0, medio=n/2, fine=MAX, key;
inserisci (array, n);
puts ("\n\nStampa dei valori ordinati mediante bubblesort:\n");
bubblesort (array, n);
printf ("\nInserisci l'elemento da cercare: ");
scanf ("%d", &key);
binsearch (array, n, inizio, medio, fine, key);
return 0;
}
|