
Другие языки программирования и технологии
Не сортирует. В чем ошибка? С++

template
void bubbleSort(T *arrayOfType, size_t sizeOfArray)
{
for(size_t indexOne = 0; indexOne < sizeOfArray - 1; ++indexOne)
{
for(size_t indexTwo = indexOne; indexTwo < sizeOfArray - 1; indexTwo++) // две ошибки нужно от первого индекса идти, а не с нуля и до конца массива, а не до середины
{
if(arrayOfType[indexTwo+1] < arrayOfType[indexOne])
{
swap(arrayOfType[indexOne], arrayOfType[indexTwo+1]); //если сравниваем первый и второй, то почему меняем второй и второй + 1?
}
}
}
}
Сто пудово в чем-то подвох. Вы и сами могли найти ошибки. Проверяете на что-то! Или на левые знаки в коде!?
void bubbleSort(T *arrayOfType, size_t sizeOfArray)
{
for(size_t indexOne = 0; indexOne < sizeOfArray - 1; ++indexOne)
{
for(size_t indexTwo = indexOne; indexTwo < sizeOfArray - 1; indexTwo++) // две ошибки нужно от первого индекса идти, а не с нуля и до конца массива, а не до середины
{
if(arrayOfType[indexTwo+1] < arrayOfType[indexOne])
{
swap(arrayOfType[indexOne], arrayOfType[indexTwo+1]); //если сравниваем первый и второй, то почему меняем второй и второй + 1?
}
}
}
}
Сто пудово в чем-то подвох. Вы и сами могли найти ошибки. Проверяете на что-то! Или на левые знаки в коде!?
#include <iostream>
#include <utility>
using namespace std;
template<typename Type>
void bubble(Type* pointer, const size_t limit) {
if (!limit) return;
auto current = 0U;
auto flag = false;
while (current < limit) {
auto next = current + 1U;
if (next != limit && pointer[current] > pointer[next]) {
swap(pointer[current], pointer[next]);
flag = true;
}
++current;
if (current == limit && flag) {
flag = !flag;
current = 0U;
}
}
}
template<typename Type>
void print(Type* pointer, const size_t limit) {
for (auto i = 0U; i < limit; ++i) cout << pointer[i] << ' ';
cout.put('\n');
}
int main() {
int box[] = { 6, 5, 9, 3, 1, 8, 7, 2, 4 };
print(box, size(box));
bubble(box, size(box));
print(box, size(box));
system("pause");
}
#include <utility>
using namespace std;
template<typename Type>
void bubble(Type* pointer, const size_t limit) {
if (!limit) return;
auto current = 0U;
auto flag = false;
while (current < limit) {
auto next = current + 1U;
if (next != limit && pointer[current] > pointer[next]) {
swap(pointer[current], pointer[next]);
flag = true;
}
++current;
if (current == limit && flag) {
flag = !flag;
current = 0U;
}
}
}
template<typename Type>
void print(Type* pointer, const size_t limit) {
for (auto i = 0U; i < limit; ++i) cout << pointer[i] << ' ';
cout.put('\n');
}
int main() {
int box[] = { 6, 5, 9, 3, 1, 8, 7, 2, 4 };
print(box, size(box));
bubble(box, size(box));
print(box, size(box));
system("pause");
}
Урегулирование Конфликтов
Да ты крутой)
Ну нифига себе неожидал что от такого спеца вопрос тут увижу)
но конечно все может быть, очевидные простые вещи бывают незаметными, особенно когда уже ничего не соображаешь.
а пузырьком недавно понадобилась, не сработало 1 первый раз, потом увидел ошибку оказалось что я даже переписать правильно алгоритм не могу)
с инета пример взять и сравнить со своим и все, или написать заново.
а template(typename T) не знаю.
Может ошибка тут ?
indexN1 - 0;
indexN2 - 0;
а должно быть
for1{ int indexN1 = 1;}
{
for2{ int indexN2 = 0;}
}
еще тоже заметил че то не то в общем ссылка
https: //nicknixer.ru/programmirovanie/algoritm-puzyrkovoj-sortirovki-odnomernogo-massiva-na-c/
если не разберешься пиши.
но конечно все может быть, очевидные простые вещи бывают незаметными, особенно когда уже ничего не соображаешь.
а пузырьком недавно понадобилась, не сработало 1 первый раз, потом увидел ошибку оказалось что я даже переписать правильно алгоритм не могу)
с инета пример взять и сравнить со своим и все, или написать заново.
а template(typename T) не знаю.
Может ошибка тут ?
indexN1 - 0;
indexN2 - 0;
а должно быть
for1{ int indexN1 = 1;}
{
for2{ int indexN2 = 0;}
}
еще тоже заметил че то не то в общем ссылка
https: //nicknixer.ru/programmirovanie/algoritm-puzyrkovoj-sortirovki-odnomernogo-massiva-na-c/
если не разберешься пиши.
Игорь Могила
Вопрос от спеца требует ещё больших усилий =)
Похожие вопросы
- Есть собранные краулером биг дата. Какие есть платформы способные анализировать, сортировать и выводить большие данные?
- Как сортировать столбцы Exel с одинаковыми значениями?
- Как разделить слова в строке, чтобы их потом сравнивать друг с другом и сортировать? (Паскаль)
- Написатьпрограмму которая методом обмена сортирует по возростанию введенный с клавиатуры одномерный массив размерностьюN
- как сортировать по дате столбцы в экселе?
- Перечислить все файлы в C: \, расширение которых содержит X и сортировать результаты по размеру. cmd.exe
- Сортировка двумерного массива. Пусть нам надо сортировать первый столбец по убыванию. C++
- Объясните этот код, я знаю что он сортирует две переменные, но не понимаю как. И так важна эта тема в программировании ?
- Можете пожалуйста сказать почему сортирует неверно(C++)
- ошибка- 6 при установки игр
Неправильный индекс указан.
А вообще, цель вопроса - узнать реакцию народа на триграфы/диграфы :))
как сделать
проверка есть ли файл 1, если есть создать файл2.
а то нихера не могу.