这是我的实现,我有一个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
我的代码有什么问题导致部分订购。
答案 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;
}
}
}