C中字符数组的冒泡排序功能

时间:2015-10-20 10:59:43

标签: arrays sorting

我试图在字符数组上使用带有swap函数的冒泡排序函数,如下所示:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

inline void SWAP(char * a, int j, int N)

{

if (j!=N) {a[j] ^= a[N]; a[N] ^= a[j]; a[j] ^= a[N];}
}

void bubblesort(char * a, int N)

{

int i, j;

for (i=N-1; i>0; i--)

for(j=0; j<i; j++)

  if (!(a[j] <= a[j+1]))
      SWAP(a,j,j+1);
}

int main()

{

int i;
int N = 0;
char * a;

a = (char *)malloc(N * sizeof(int));
printf("Enter size of array:");
scanf("%d",&N);

for(i=0; i<N; i++)
{
printf("%d. Enter your characters:", i+1);
scanf("%c\n", &a[i]);
}

bubblesort(a, N);

for(i=0;i<N;i++)
{
printf("%c\n", a[i]);
}

printf("\n");   
return 0;

}

但是当我在Linus中运行它时,它可以工作,但带有交换功能的 bubblesort 仅适用于数组的前两个字符元素,而最后一个元素则被省略。似乎数组的最后一个元素没有存储在数组中。任何人都可以帮忙解决这个问题吗?

0 个答案:

没有答案