Другие языки программирования и технологии

c++.Неправильно выводятся индексы l и r,соответствующие индексам массива. Как это исправить?

#include <iostream>
#include <cstdlib>

using namespace std;
//--------------------------------------------------------
void arrInput(int arr[], int n)
{
for(int i = 0; i < n; i++)
{
cout << "Enter array [" << i << "] element: ";
cin >> arr;
}
}
//--------------------------------------------------------
void quickSort(int arr[], int l, int r)
{
int i = l;
int j = r;

int vid = arr[(l + r) / 2];

while (i <= j)
{
while(arr < vid)
{
i++;
}
cout << "l = " << l << endl;

while (arr[j] > vid)
{
j--;
}
cout << "r = " << r << endl;
if (i <= j)
{
int y = arr;
arr = arr[j];
arr[j] = y;
i++;
j--;
}
};

if (l < j)
quickSort(arr, l, j);
if (i < r)
quickSort(arr, i, r);
}
//-----------------------------------------------------------
void arrOutput(int arr[], int n)
{
for(int i = 0; i < n; i++)
{
cout << arr << " ";
}
cout << endl;
}
//------------------------------------------------------------
int main()
{
int n;
cout << "Enter array size: ";
cin >> n;

int arr[n];

arrInput(arr,n);
quickSort(arr,0,n-1);
arrOutput(arr,n);

system("PAUSE>nul");
return 0;
}
St
Stas
532
#include <iostream>
#include <string>
#include <ctime>

using namespace std;

void input_array(int *, size_t);
void random_array(int *, size_t);
void show_array(int *, size_t);
void quick_sort(int *, size_t, size_t);
void uswap(int &, int &);

int main() {
    srand(unsigned(time(NULL)));
    wcout.imbue(locale("rus_rus.866"));

    wcout << L"Определите размер массива: ";
    size_t size;
    cin >> size;

    int * arr = new int [size];

    random_array(arr, size);
    wcout << L"Вывод массива, заданного случайными числами: \n";
    show_array(arr, size);
    quick_sort(arr, 0, size - 1);
    wcout << L"Вывод отсортированного массива по возрастанию: \n";
    show_array(arr, size);
    wcout << L"Ввод массива c клавиатуры: \n";
    input_array(arr, size);
    wcout << L"Вывод массива, введённого с клавиатуры: \n";
    show_array(arr, size);
    quick_sort(arr, 0, size - 1);
    wcout << L"Вывод отсортированного массива по возрастанию: \n";
    show_array(arr, size);

    delete[] arr;
    cin.get(); cin.get();
}

void input_array(int * _array, size_t _size) {
    for (size_t n = 0; n < _size; n++) {
        cout << "_array[" << n << "] -> ";
        cin >> _array[n];
    }
    wcout << L"Данные успешно введены. \n";
}

void random_array(int * _array, size_t _size) {
    for (size_t n = 0; n < _size; n++) _array[n] = rand();
}

void show_array(int * _array, size_t _size) {
    for (size_t n = 0; n < _size; n++) cout << _array[n] << ' ';
    cout << endl;
}

void quick_sort(int * _array, size_t _beg, size_t _end) {
    int n = (int)_beg, m = (int)_end;
    int mid = _array[(_beg + _end) >> 1];

    do {
        while (_array[n] < mid && n < (int)_end) ++n;
        while (_array[m] > mid && m > (int)_beg) --m;

        if (n <= m) {
            if (n < m) uswap(_array[n], _array[m]);
            ++n;
            --m;
        }
    } while (n <= m);

    if ((int)_beg < m) quick_sort(_array, _beg, m);
    if (n < (int)_end) quick_sort(_array, n, _end);
}

void uswap(int & _a, int & _b) {
    int temp = _a;
    _a = _b;
    _b = temp;
}
***сымбат ***
***сымбат ***
57 372
Лучший ответ

Похожие вопросы