使用冒泡排序在C中对2D数组进行排序

时间:2014-10-26 16:59:47

标签: c arrays

好的,所以我正在编写一个程序,给定一个2D字符串数组,我会按字母顺序对它们进行排序。我尝试在这个上使用bubblesort。

到目前为止这是我的代码

void bubbleSort(char a[][100], int sz){
    char temp[100];
    int i,j;

    for(i=0; i<sz; i++){
        for(j=i+1; j <sz-1; j++){
            if(strcmp( a[i], a[j] ) >0){
                strcpy(temp, a[j]);
               strcpy(a[j], a[j-1]);
                strcpy(a[j-1], temp);
            }
        }   
    }
}

main(){
    char x[10][100] = {"to","be","or","not","to","be","that","is","the","question"};
    bubbleSort(x,10);
    for(int i=0;i<10;i++)
       printf("%s\n",x[i]);

    system("pause");    
}

它似乎不起作用。这就是我得到的:

be
or
not
be
is
to
that
the
to
question
好像,发生了什么?我的代码有问题吗?

1 个答案:

答案 0 :(得分:1)

您正在与ij进行比较。然后在jj-1之间交换..

if(strcmp( a[i], a[j] ) >0){
            strcpy(temp, a[j]);
           strcpy(a[j], a[j-1]);
            strcpy(a[j-1], temp);
        }

ij之间交换

for(i=0; i<sz; i++){
    for(j=i+1; j <sz-1; j++){
        if(strcmp( a[i], a[j] ) >0){
            strcpy(temp, a[j]);
           strcpy(a[j], a[i]);
            strcpy(a[i], temp);
        }
    }
}