冒泡排序字符数组

时间:2014-12-03 03:48:11

标签: c bubble-sort

我编写了以下代码来冒泡排序字符串。它显示垃圾值。

main() {
  int n, j, k;
  char a[20], temp;
  // statements to scan the number of items (n) and the string a[n].

  for (j = 1; j < n; j++) {
    for (k = 0; k < n - j; k++) {
      if (a[k] >= a[k+1]) {
        temp = a[k];
        a[k] = a[k+1];
        a[k+1] = a[k];
      }
    }
  }
  printf("The sorted items are: %s",a);
}

可能是什么问题?

2 个答案:

答案 0 :(得分:3)

你正确地制作了一个temp-var来交换这两个元素,但是忘了使用它!你想要:

a[k+1] = temp;

答案 1 :(得分:3)

在一些旧的C编译器中,您无法比较字符。一个简单的解决方案是打字。至于你的代码,

main()
{
int n,j,k;
char a[20], temp;
//statements to scan the number of items (n) and the string a[n].

for(j=1; j<n; j++)
{
    for(k=0; k<n-j; k++)
    {
        if((int)a[k]>=(int)a[k+1])
        {
            temp=a[k];
            a[k]=a[k+1];
            a[k+1]=temp;
        }
    }
}
printf("The sorted items are: %s",a);
}

请注意,通过类型转换,您将比较字符的ASCII值。