У меня есть один массив, содержащий chars
из входного и другого массива, содержащего указатели на соответствующие chars
в первом массиве. Эта часть прошла хорошо.
Но тогда я хотел бы пузырьковую сортировку char**
массив (массив указателей), поэтому исходный массив остается неизменным, но что-то идет не так (текст не отсортирован).
EDIT: Please discuss only the sorting algorithmchar tab[200];//array of chars
char** t = new char*[tabLength];
//SOMETHING
....
....
int n = tabLength;//length of tab(length of the word it contains)
//TILL HERE EVERYTHING IS FINE -----------------------------------
//bubble sorting below
do{
for(int i = 0; i < n -1; i++){
if(*t[i] > *t[i+1]){
char* x = t[i];
t[i] = t[i+1];
t[i+1] = x;
}
n--;
}
}while(n>1);
cout<<"sorted input";
for(int i = 0; i < tabLength; i++)
cout<<t[i];
cout<<endl;
cout<<"original"<<tab<<endl;
Убедитесь, что вы распечатали значения, на которые указывают указатели:
for(int i = 0; i < tabLength; i++)
cout << *t[i];
Я просто использовал бы функциональность, уже имеющуюся в моем распоряжении в стандартной библиотеке:
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
std::string original;
std::getline(std::cin, original);
std::cout << '|' << original << "|\n";
std::string sorted = original;
std::sort(std::begin(sorted), std::end(sorted));
std::cout << "Sorted : " << sorted << '\n';
std::cout << "Original: " << original << '\n';
}
Тестовый забег:
Привет, мир, как твои дела сегодня? Сортировка:,? Haadddeeghilllnoooooorrtuwwyy Оригинал: Привет, мир, как ты сегодня?