Привет, подскажите идею как оптимально реализовать сортировку элементов std::vector<int> без использования std::sort()? С std::sort() все понятно и работает, вопрос именно в том, чтобы сделать без нее.
Заранее всем спасибо.
Сортировка пузырьком )
https://education.yandex.ru/journal/osnovnye-vidy-sortirovok-i-primery-ikh-realizatsii
Что-то не получается никак... Пример взял по ссылке:
void BubbleSort(vector<int>& values) { for (size_t idx_i = 0; idx_i + 1 < values.size(); ++idx_i) { for (size_t idx_j = 0; idx_j + 1 < values.size() - idx_i; ++idx_j) { if (values[idx_j + 1] < values[idx_j]) { swap(values[idx_j], values[idx_j + 1]); } } } }
Ошибся при добавлении в свой проект 😔 все работает
Вот еще вариант:
void bubbleSort(vector<int>& arr) { int n = arr.size(); bool swapped; for (int i = 0; i < n - 1; i++) { swapped = false; for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); swapped = true; } } if (!swapped) break; } }
Взято отсюда.
Если от большего к меньшему, то меняем:
if (arr[j] > arr[j + 1])
на:
if (arr[j] < arr[j + 1])