按字母顺序排列单词

时间:2013-05-21 07:02:40

标签: c++ visual-c++

这是我的实现,我有一个txt文件,动物随机分配。我想订购它们并将其插入列表中。

void SortedList::insert(std::string x){

    int insertPoint=0;

    if(top==n){
    n = 2 * n;
    string* temp = arr;
    arr = new string[n];

    for (int i = 0; i < top; i++){
            arr[i] = temp[i];
            }

        delete[] temp;
    }


    arr[top]=x;
    LinearOrdering();
    top++;

}

void SortedList::LinearOrdering(){

    for(int i=0; i < top ; i++){

    if (arr[i] > arr[ i + 1]) {
            swap (arr[i], arr[i+1]);
        }

    }

}

这是我的结果

aardvark
baboon
cougar
gorilla
lion
mouse
ocelot
gerbil
orangutan
hamster
panther
elephant
rat
rhinoceros
tiger
hippopotamus
zebra

我的代码有什么问题导致部分订购。

3 个答案:

答案 0 :(得分:1)

看起来你正试图bubble-sort列表。您将不得不循环多次以使其工作。

这个答案假设您出于教育目的这样做。否则,正如StilesCrisis建议的那样,使用std::sort(),您也可能更喜欢std::vector<std::string>而不是string*

答案 1 :(得分:0)

LinearOrdering不对数据进行排序,它只是交换一些元素。

省去一些麻烦并调用std :: sort。

答案 2 :(得分:0)

问题在于线性排序功能

oid SortedList :: LinearOrdering(){

for(int i=0; i < top ; i++){

if (arr[i] > arr[top]) {
        swap (arr[i], arr[top]);
        break; 

    }

}

}