L
LastHunter
Здравствуйте. Учусь с++. Попытался написать прогу по этому заданию: Напишите функцию, которая сортирует массив с использованием рекурсии.
Но не работает, ошибку найти не могу, подскажите в чем проблема?
Но не работает, ошибку найти не могу, подскажите в чем проблема?
C++:
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <stdio.h>
using namespace std;
//метод половинного деления
void sortHoor(int A[], int L,int R)
{
int i=L, j=R;
int x=A[(L+R)/2];
while( i<=j )
{
while (A[i]<x)
i++;
while (A[j]>x)
j--;
if (i<=j)
{
int t = A[i];
A[i] = A[j];
A[j] = t;
i++;
j--;
}
}
if(L<j)
sortHoor(A, L, j);
if(i<R)
sortHoor(A, i, R);
}
//функция ввода, здесь проблем нет
int vvod(int *A, int n)
{
int v=0;
printf("kak budet zadavatsa massiv: 1)random, 2)sam zadam \t");
scanf("%d", &v);
if (v==1)
{
for (int i=0;i<n;i++)
A[i]=rand()%21-10;
}
if (v==2)
{
for (int i=0;i<n;i++)
scanf("%d", &A[i]);
}
if(v!=1 && v!=2)
printf("error");
return 0;
}
int main()
{
int n=0, L=0, R=0;
printf ("vvedite razmer massiva: n\t");
scanf ("%d", &n);
int* A=(int* )malloc(n* sizeof(int ));
vvod (A,n);
for (int i=0;i<n;i++)
{
printf("%d\t", A[i]);
}
L=A[0];
R=A[n-1];
sortHoor (A,L,R);
for (int i=0;i<n;i++)
printf("%d\t", A[i]);
system("pause");
return 0;
}