2 метода сотировки через свитч с++

133
01 сентября 2021, 06:50
#include <iostream>
#include <ctime>
using namespace std;
const int n = 5;
int first, last;
void quicksort(int* mas, int first, int last)
{
    int mid, count;
    int f = first, l = last;
    mid = mas[(f + l) / 2]; 
    do
    {
        while (mas[f] < mid) f++;
        while (mas[l] > mid) l--;
        if (f <= l) 
        {
            count = mas[f];
            mas[f] = mas[l];
            mas[l] = count;
            f++;
            l--;
        }
    } while (f < l);
    if (first < l) quicksort(mas, first, l);
    if (f < last) quicksort(mas, f, last);
}
void main()
{
    setlocale(0, "Rus");
    int* A = new int[n];
    srand(time(NULL));
    cout << "Исходный массив: ";
    for (int i = 0; i < n; i++)
    {
        A[i] = rand() % 10;
        cout << A[i] << " ";
    }
    int U;
    cout << "\n 1.Сортировка Хоара \n 2.Сортировка выбором" << endl;
    cin >> U;
    switch (U) {
    case'1':
        first = 0; last = n - 1;
        quicksort(A, first, last);
        cout << endl << "Итоговый массив: ";
        for (int i = 0; i < n; i++) cout << A[i] << " ";
        delete[]A;
    case'2':
        for (int startIndex = 0; startIndex < n - 1; ++startIndex)
        {
            int smallestIndex = startIndex;
            for (int currentIndex = startIndex + 1; currentIndex < n; ++currentIndex)
            {
                if (A[currentIndex] < A[smallestIndex])
                    smallestIndex = currentIndex;
            }
            swap(A[startIndex], A[smallestIndex]);
        }
        for (int index = 0; index < n; ++index)
            cout << A[index] << ' ';
    }
    system("pause>>void");
}

При переходе на свитч, выполнение сортировки не происходит. Буду признателен, если подскажите, что я сделал не так. Заранее спасибо.

Answer 1

Вы сравниваете число int c числовым кодом символа '1' (49). А еще пропущен break;. А еще для использования функции rand необходимо включать заголовочный файл cstdlib. А еще глобальные переменные с именами, совпадающими с локальными. А во втором случае массив не удаляете. Ну и сам алгоритм выглядит как-то подозрительно, там действительно должены быть перебор по одному элементу и рекурсия?

READ ALSO
Передача значения переменной класса в структуру в этом же классе С++

Передача значения переменной класса в структуру в этом же классе С++

Помогите, пожалуйста, решить проблемуНе знаю, как записать и в сети найти не получается

110
Тонкости работы с функцией strdup

Тонкости работы с функцией strdup

Создаст ли strdup() '\0' в конце динамического массива?

73
Выброс и перехват исключения [закрыт]

Выброс и перехват исключения [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

106
Анимация при скролле. Как создавать такие анимации?

Анимация при скролле. Как создавать такие анимации?

Мучает вопрос с анимацией(примеры ниже), никак не могу найти в интернете, может неправильно ищуМне никак не понятно каким образом всё это...

182