Уведомления
Очистить все
Привет, подскажите идею как оптимально реализовать сортировку элементов std::vector<int> без использования std::sort()? С std::sort() все понятно и работает, вопрос именно в том, чтобы сделать без нее.
Заранее всем спасибо.
Создатель темы Размещено : 05.03.2025 21:51
Сортировка пузырьком )
https://education.yandex.ru/journal/osnovnye-vidy-sortirovok-i-primery-ikh-realizatsii
Размещено : 06.03.2025 11:46
Что-то не получается никак... Пример взял по ссылке:
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]);
}
}
}
}
Создатель темы Размещено : 06.03.2025 12:59
Ошибся при добавлении в свой проект 😔 все работает
Создатель темы Размещено : 06.03.2025 13:21
Вот еще вариант:
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;
}
}
Взято отсюда.
Размещено : 06.03.2025 17:25
Если от большего к меньшему, то меняем:
if (arr[j] > arr[j + 1])
на:
if (arr[j] < arr[j + 1])
Размещено : 06.03.2025 17:28