Другие языки программирования и технологии
Одномерные массивы. Пузырьковая сортировка. С++
Упорядочить нечетные элементы по возрастанию. Четные элементы должны остаться на своих местах.
bool noSwap;
for (int i = N - 1; i >= 0; i--)
{
noSwap = 1;
for (int j = 0; j < i; j++)
{
if (mass[j] > mass[j + 1])
{
tmp = mass[j];
mass[j] = mass[j + 1];
mass[j + 1] = tmp;
noSwap = 0;
}
}
if (noSwap == 1)
break;
}
где N – число элементов в массиве, а mass[] – массив элементов.
for (int i = N - 1; i >= 0; i--)
{
noSwap = 1;
for (int j = 0; j < i; j++)
{
if (mass[j] > mass[j + 1])
{
tmp = mass[j];
mass[j] = mass[j + 1];
mass[j + 1] = tmp;
noSwap = 0;
}
}
if (noSwap == 1)
break;
}
где N – число элементов в массиве, а mass[] – массив элементов.
Юрий Чижаков
Тут меняются все числа, а мне нужно только нечетные.
#include <iostream>
#include <vector>
#include <ctime>
int main() {
const size_t n = 20;
std::vector<int> v(n);
srand((unsigned)time(nullptr));
for (int& item : v) { // Заполнение
item = rand() % 101;
std::cout << item << ' ';
}
std::cout << '\n';
std::vector<int> indexes;
for (int i = 0; i < n; i++)
if (v[i] % 2)
indexes.push_back(i);
const int odds = (int)indexes.size();
for (int i = 0; i < odds - 1; i++) { // Сортировка
bool swapped = false;
for (int j = 0; j < odds - 1 - i; j++) {
int& first = v[indexes[j]];
int& second = v[indexes[j + 1]];
if (first % 2 && second % 2 && first > second) {
std::swap(first, second);
swapped = true;
}
}
if (!swapped)
break;
}
for (int item : v) // Вывод
std::cout << item << ' ';
return 0;
}
#include <vector>
#include <ctime>
int main() {
const size_t n = 20;
std::vector<int> v(n);
srand((unsigned)time(nullptr));
for (int& item : v) { // Заполнение
item = rand() % 101;
std::cout << item << ' ';
}
std::cout << '\n';
std::vector<int> indexes;
for (int i = 0; i < n; i++)
if (v[i] % 2)
indexes.push_back(i);
const int odds = (int)indexes.size();
for (int i = 0; i < odds - 1; i++) { // Сортировка
bool swapped = false;
for (int j = 0; j < odds - 1 - i; j++) {
int& first = v[indexes[j]];
int& second = v[indexes[j + 1]];
if (first % 2 && second % 2 && first > second) {
std::swap(first, second);
swapped = true;
}
}
if (!swapped)
break;
}
for (int item : v) // Вывод
std::cout << item << ' ';
return 0;
}
Похожие вопросы
- как при сортировке одномерного массива оставить на месте неположительные элементы
- Сортировка одномерного массива + вставка числа в отсортированный массив PASCAL
- Сортировка одномерного массива
- Помогите пожалуйста решить задачи по информатике, одномерные массивы. Си шарп. Очень срочно. Пожалуйста!!!!
- Помогите с программой Одномерные массивы и указатели
- В одномерном массиве, состоящем из n вещественных элементов, вычис- лить: 39 1) сумму положительных элементов массив
- Помогите сделать лабораторную работу по теме "Одномерные массивы" [C++]
- Microsoft Visual C++ 6.0 В одномерном массиве, состоящем из n вещественных элементов, вычислить...
- Помогите с С++. Надо найти произведение элементов одномерного массива между первым и последним 0.
- Сортировка Естественным слиянием одномерного массива