Intercambiar dos elementos de una función de matriz

¿Puedes ayudarme diciéndome qué está mal con esto? ¿Por qué no funciona la función de intercambio?

void swap(int a[], int b, int c) { int temp = a[b]; a[b] = a[c]; a[b] = temp; } void bubble1 (int a[], int N){ int i; for(i=0;ia[i+1]){ swap(a,i,i+1); } } } void main() { int N = 11; int a[12]={5,3,12,4,25,10,14,35,2,8,13}; bubble1 (a,N); int i; for(i = 0; i < N; i++){ printf("%d\n",a[i]); } } 

Si no uso la función de intercambio y hago el intercambio manualmente en la función “burbuja”, funciona. Sin embargo, si uso el intercambio, no funciona, aunque sea exactamente igual. ¿Qué estoy haciendo mal aquí?

  int temp = a[b]; a[b] = a[c]; a[b] = temp; 

Simple error tipográfico, estás asignando dos veces a a[b] . El segundo debe ser a[c]