Написать функцию пустот под названием string_list_sort(), который читает в любом количестве строк (дубликаты разрешены) от CIN, хранит их в векторе, а затем сортирует их. Не используйте стандартную функцию сортировки C++ здесь - используйте созданную вами версию quicksort.CIN строки в вектор и QuickSort их
Моя проблема, я пытался использовать strcmp()
но у меня много ошибок, поэтому я попробовал этот метод, но у меня есть проблема с char val = v[end]
. Я не уверен, как сравнить два значения std::string
. Я изменил char на строку, и он работает. Теперь моя проблема - это, например, v = {"apple", "car", "fox", "soap", "foz"}; результат я получаю яблоко, мыло, автомобиль, лисица, Фос, не в алфавитном порядке
#include <iostream>
#include <string>
#include <cstdio>
#include <cstring>
#include <vector>
#include "error.h"
using namespace std;
void string_list_sort(vector<string> v){
string line;
while (getline(cin, line)){
if (line.empty()){
break;
}
v.push_back(line);
}
}
int partition(vector<string>&v, int begin, int end)
{
char val = v[end];
char temp;
int j = end;
int i = begin - 1;
while (true)
{
while (v[++i] < val)
while (v[--j] > val)
{
if (j == begin)
break;
}
if (i >= j)
break;
temp = v[i];
v[i] = v[j];
v[j] = temp;
}
temp = v[i];
v[i] = v[end];
v[end] = temp;
return i;
}
void quicksort(vector<string>& v, int begin, int end)
{
if (begin < end)
{
int p = partition(v, begin, end);
quicksort(v, begin, p - 1);
quicksort(v, p + 1, end);
}
}
void quick_sort(vector<string>& v)
{
quicksort(v, 0, v.size() - 1);
}
int main()
{
vector<string> v;
v =
{ " this is a test string,.,!"};
string word;
while (cin >> word)
{
v.push_back(word);
}
quick_sort(v);
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
}
Поскольку вы используете 'std :: string', вы можете сравнить с' <', '<=', '> 'и'> = '. Вам не нужно использовать 'strcmp()'. Это старомодный способ, унаследованный от C. –
Кроме того, вам нужно проверить свою клавиатуру. Ваш ключ 'Tab' окажется сломанным, и в результате показанный код в основном нечитабелен. –
Анонимные пользователи gotta смотрят друг на друга, поэтому я отфильтровал ваш код. – user4581301