C/C++

Сортировка массивов на С++

Массив B включает 15 целых чисел из интервала [-15, 15]. Отсортировать полученный массив шейкерной сортировкой. Определить, сколько раз встречалось каждое число из интервала.
На всякий случай с отдельной функцией. Элементы массива задаются генератором (псевдо)случайных чисел:
 #include 
#include
#include
using namespace std;
void shaker(int X [], int size)
{
int left = 0, right = size - 1, yes = 1;
while ((left < right) && yes > 0)
{
yes = 0;
for (int i = left; i X[i + 1])
{ swap(X[i], X[i + 1]); yes = 1; }
right--;
for (int i = right; i>left; i--)
if (X[i - 1] > X[i])
{ swap(X[i], X[i - 1]); yes = 1; }
left++;
}
}
int main()
{
int a, b, i, n = 15, A[15];
srand(time(nullptr));
for (i = 0; i < n; i++)
{
A[i] = rand() % 31 - 15;
cout
Александр Катаргин
Александр Катаргин
66 572
Лучший ответ
 #include  
using namespace std;

void cocktailSort(int arr[], int n) {
bool swapped = true;
int start = 0;
int end = n - 1;

while (swapped) {
swapped = false;

for (int i = start; i < end; ++i) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
swapped = true;
}
}

if (!swapped) break;

swapped = false;

--end;

for (int i = end - 1; i >= start; --i) {
if (arr[i] > arr[i + 1]) {
swap(arr[i], arr[i + 1]);
swapped = true;
}
}

++start;
}
}

int main() {
int B[] = {1, -4, 7, 5, -11, -8, 0, 15, -12, 2, -5, 14, -1, -7, 13};
int C[31] = {0}; // массив для подсчета чисел
const int n = 15;

cocktailSort(B, n);

for (int i = 0; i < 15; ++i) {
++C[B[i] + 15]; // увеличиваем соответствующий элемент массива на 1
}

for (int i = 0; i < 31; ++i) {
if (C[i] > 0) {
cout