我正在尝试使用 InsertSort 算法来输入存储在向量中的字符串。
我所做的是将一些字符串输入到向量中,然后我使用插入排序对向量进行排序。
但我不确定为什么它不起作用!谁能指出我正确的方向?
#include <iostream>
#include <cstring>
#include <vector>
#include <cstdlib>
using namespace std;
int main (){
vector <string> names; //vector to store
string input; //input is the variable of strings
cout<<"Input a list of names \n";
cout<<"To end the list type 'END'" <<endl;
while (true){
getline(cin, input);
if (input =="END")
break;
names.push_back(input); //push into vector names
}
//my insertsort starts here
string temp;
int i;
for (int j = 1; j < names.size(); j++){
i = j - 1;
while ((i>0) && (names[i]>names[j]) ) {
names[i+1] = names[i];
i=i-1;
}
names[i+1] = names[j];
}
for (unsigned int i = 0; i<names.size (); i++)
cout<<names[i]<<endl;
cout<<endl;
system("pause");
}
谢谢一堆
编辑:我将输入字符串,例如我将输入:
彼得苹果兔
我想要的输出是,按字母顺序,:
苹果彼得兔
目前使用示例输入,我得到: Peter Apple Rabbit
编辑 3:
我的插入排序现在看起来像这样:
string temp;
int i;
for (int j = 1; j < names.size(); j++){
i = j - 1;
temp = names[j];
while ((i>=0) && (names[i]>names[j]) ) {
names[i+1] = names[i];
i=i-1;
}
names[i+1] = temp;
}