[英]Bubble sorting a character array
我编写了以下代码来对字符串进行冒泡排序。 它显示垃圾值。
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);
}
可能是什么问题?
您正确地创建了一个temp-var来交换这两个元素,但是忘记了使用它! 你要:
a[k+1] = temp;
在某些旧的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值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.