000
06.05.2008, 17:11 Uhr
estela
|
Hallo, ich habe versucht ein Programm zu schreiben, aber es funktioniert nicht richtig und ich verstehe nicht, wo ich das Problem habe. Es geht um MergeSort hier das Programm:
C++: |
#include <cstdlib> #include <iostream> using namespace std;
void merge(double a[], int l, int m, int r) { int i, j, k; double *b = new double[r+1]; i=l; j=m+1; k=l; for(int k=l; k<=r; k++) { if((i<=m || j<=r) && (a[i] > a[j])) { b[k]=a[j]; j=j+1; } else { b[k]=a[i]; i=i+1; } } if (i<=m)//Folge wird zurueck von B nach A { b[k]=a[i]; i=i+1; } cout << b[k] << ": "; delete [] b; }
void mergeSort(double a[], int l, int r) { int m; if (l < r) { m =(l+r)/2; mergeSort(a, l, m); mergeSort(a, m+1, r); merge(a, l, m, r); } } int main(int argc, char*argv[])
{ int n = 5; double a[5]={2.8, 0.1, 4.3, 3.3, 1.3}; mergeSort(a, 0, n) ; return 0; }
|
Wenn ich das Programm Teste bekomme ich: 0.1 : 2.8 : 3.3 : 3.3 : 4.3. Wiso 3.3 verdoppelt und was ist mit 1.3??? HILFE!!!!!!!!!!!!!!!!!!!!!!!!!!! Dieser Post wurde am 06.05.2008 um 18:50 Uhr von FloSoft editiert. |