#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;
}
Другие языки программирования и технологии
c++.Неправильно выводятся индексы l и r,соответствующие индексам массива. Как это исправить?
#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;
}
#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;
}
Похожие вопросы
- Подскажите есть ли в c# строковые имена индексов массива как в PHP (пример a["abc"])? если есть то как с ними работать
- почему не работает данная программа? в некоторых случах выводит, что индекс массива вышел за его границы
- C# Может ктонить объяснить. \r Соответствует возврату каретки?Concole.Write("\n\r"); Что делает?
- Может ли кирпич, имеющий форму прямоугольного параллепипеда с ребрами a,b,c, пройти через круглое отверстие радиуса R?
- c++ Borland. Найти количество не отрицательных нечетных элементов двумерного массива.
- C++ Как объявить и вывести из функции статический двумерный массив?
- Borland C++ неправильно считывает float
- Дан массив N*N. Найти индекс левого верхнего элеманта квадрата 2х2 с макс суммой+вывезти сумму! Помагите написать код
- Помогите пожалуйста написать программу: Найти сумму индексов четных элементов массива. На языке С++.
- Помогите Basic. Программирование. Индекс выходит за границы массива. Где ошибка?