#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. Программирование. Индекс выходит за границы массива. Где ошибка?