我试图在字符数组上使用带有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 仅适用于数组的前两个字符元素,而最后一个元素则被省略。似乎数组的最后一个元素没有存储在数组中。任何人都可以帮忙解决这个问题吗?