Hallo Leute,
Wir sollten für die Uni den Merge Sort Programmieren in C++ und dessen Laufzeit messen,
nun meine frage, wieso stürzt das Programm bei 260.000+ Feldern ab ?
Gruß Hashimura.
Hier mal den Code, vielleicht ist da iwas falsch.
Wir sollten für die Uni den Merge Sort Programmieren in C++ und dessen Laufzeit messen,
nun meine frage, wieso stürzt das Programm bei 260.000+ Feldern ab ?
Gruß Hashimura.
Hier mal den Code, vielleicht ist da iwas falsch.
C++:
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
void merge_sort(int [],int ,int );
void merge(int [],int,int ,int );
int main()
{
int n = 0;
for(int i = 0 ; i <= 20 ; i++){
n += 20000;
int a[n];
for(int i = 1 ; i <= n ; i++){
a[i] = rand();
}
int p=1,r=n;
double start = clock();
merge_sort(a,p,r);
double end = clock();
cout << i << ". " << n << " Felder | Zeit : " << (end - start) / CLOCKS_PER_SEC << " sekunden."<<"\n";
}
}
void merge_sort(int a[],int p,int r)
{
int q;
if(p<r)
{
q=(p+r)/2;
merge_sort(a,p,q);
merge_sort(a,q+1,r);
merge(a,p,q,r);
}
}
void merge(int a[],int p,int q,int r)
{
int n1=q-p+1;
int n2=r-q;
unsigned long long Max_Zahl = 18446744073709551;
int L [n1 + 1] ;
int R [n2 + 1] ;
for(int i=1;i<=n1;i++)
{
L[i]=a[p+i-1];
}
for(int j=1;j<=n2;j++)
{
R[j]=a[q+j];
}
L[n1+1]= Max_Zahl;
R[n2+1]= Max_Zahl;
int i=1, j=1;
for(int k=p;k<=r;k++)
{
if(L[i]<=R[j])
{
a[k]=L[i];
i=i+1;
}
else
{
a[k]=R[j];
j=j+1;
}
}
}
[/code}