Процесс завершен с возвращаемым значением 3221226356, после печати выходного массива - PullRequest
1 голос
/ 29 сентября 2019

Я пытаюсь написать код C ++ для алгоритма быстрой сортировки.Я использую указатель (*arr) для хранения входного массива целых чисел.В функции main() после вызова quickSort() цикл for печатает отсортированный массив.

На выходе сортированный массив печатается, но программа ждет несколько секунд, а затем завершается, говоря: "* Процесс завершен через 19,07 секунд с возвращаемым значением 3221226356"

Это из-за malloc()?

#include<bits/stdc++.h>
using namespace std;
void swap(int *arr,int a,int b)
{
    int temp=*(arr+a);
    *(arr+a)=*(arr+b);
    *(arr+b)=temp;

}
int partition(int *arr,int n,int low,int high)
{
    int i,pivot;
    i=low-1;
    pivot=*(arr+high);
    for(int j=low;j<=high-1;j++)
    {
        if(*(arr+j)<pivot)
        {
            i++;
            swap(arr,i,j);
        }
    }

    swap(arr,i+1,high);
    return i+1;

}
void quickSort(int *arr,int n,int low,int high)
{
    if(low<high)
    {
        int pos;
        pos=partition(arr,n,low,high);
        cout<<"Partition for pos:"<<pos<<" ";
        for(int i=0;i<n;i++)
        {
            cout<<*(arr+i)<<" ";
        }
        cout<<endl;
        quickSort(arr,n,low,pos-1);
        quickSort(arr,n,pos+1,high);

    }
}
int main()
{
    int n,*arr;
    arr=(int*)malloc(n*sizeof(int));
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cout<<"Enter"<<endl;
        cin>>*(arr+i);
    }

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

    for(int i=0;i<n;i++)
    {
        cout<<*(arr+i)<<" ";
    }
    return 0;
}

Выход для n = 7 и входной массив {10,80, 30,90,40,50,70}:

7
Enter
10
Enter
80
Enter
30
Enter
90
Enter
40
Enter
50
Enter
70
Partition for pos:4 10 30 40 50 70 90 80
Partition for pos:3 10 30 40 50 70 90 80
Partition for pos:2 10 30 40 50 70 90 80
Partition for pos:1 10 30 40 50 70 90 80
Partition for pos:5 10 30 40 50 70 80 90
10 30 40 50 70 80 90
--------------------------------
Process exited after 19.07 seconds with return value 3221226356
Press any key to continue . . .
...