Ошибка при работе с массивом
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Выдает ошибку Run-Time Check Failure #2 — Stack around the variable 'a' was corrupted. По заданию нужно сделать: Данная последовательность из 20 целых чисел, заполненная в промежутке [1; 20]. Отсортировать первые 10 элементов последовательности по возрастанию, последние 10 — наоборот (используя алгоритм быстрой сортировки).
include <iostream>
include <ctime>
using namespace std;
void Set(int array[], int n);
void Print(int array[], int n);
void quickSort(int mas[], int n);
int main()
{
const int s = 20;
srand(time(NULL));
int a[s];
Set(a, s);
Print(a, s);
cout << «\n»;
quickSort(a, s);
Print(a, s);
system(«pause»);
return 0;
}
void Set(int array[], int n)
{
for (int i = 0; i < n; i++)
array[i] = rand() % 20 + 1;
}
void Print(int array[], int n)
{
for (int i = 0; i < n; i++)
{
cout << array[i] << « | »;
}
}
void quickSort(int mas[], int n)
{
int m = mas[n / 2], i = 0, j = n;
do
{
while (mas[i] < m)
i++;
while (mas[j] > m)
j--;
if (i <= j)
{
int temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
i++;
j--;
}
}
while (i <= j);
if (i < n)
quickSort(mas + i, n — i);
if (j > 0)
quickSort(mas, j);
}
Вылезаете за границу массива.
Реализацию quickSort см. на Викискладе.
А вообще-то говоря, есть стандартная функция qsort(). Может и не надо велосипед изобретать?