Mi rivolgo ai programmatori di questo forum:
ho rimesso mani al C per sport e ho provato a scrivere l'algoritmo dello shakersort o cocktailsort, come dir si voglia.
Ho messo su questo codice di prova:
//shakersort
#include <stdio.h>
void shakersort(int v[], int n)
{
int i,j,m=0;
int tmp;
short unsigned ordinato = 0, cnt=0;
while(!ordinato)
{
for(i=m; i<n; ++i)
{
ordinato = 1;
if(v[i]>v[i+1])
{
tmp = v[i];
v[i] = v[i+1];
v[i+1] = tmp;
ordinato = 0;
}
++cnt;
}
--n;
for(j=n; j>m; ++j)
{
ordinato = 1;
if(v[j]<v[j-1])
{
tmp = v[j];
v[j] = v[j-1];
v[j-1] = tmp;
ordinato = 0;
}
++cnt;
}
++m;
}
printf("\n--%d--\n\n", cnt);
}
int main(void)
{
int a[]={1,2,1,1,1,1,1,1};
int i;
shakersort(a,8);
for(i=0; i<8; ++i)
printf(" %d ",a[i]);
return 0;
}
Il problema è che compila senza problemi, ma nell'esecuzione mi crasha all'avvio.
Qualcuno mi dà una mano?
EDIT: c'è un errore di segmentazione