2016-04-07 16 views
0

Ich habe ein String-Array, das ich zu Double konvertieren, ich übergebe es in den folgenden Quicksort-Algorithmus und mehrere Fehler sagen, dass ich nicht doppelt in int trotz doppeltem Array umgekehrt. Links und rechts sind 0 bzw. arr.Length - 1.Fehler bei der Verwendung von Quicksort zum Sortieren eines Doppel

public static double[] quick_Sort(double[] arr, double left, double right) 
    { 

      double i, j; 
      double pivot, temp; 
      i = left; 
      j = right; 
      pivot = arr[(left + right)/2]; 
      do 
      { 
       while ((arr[i] < pivot) && (i < right)) i++; 
       while ((pivot < arr[j]) && (j > left)) j--; 
       if (i <= j) 
       { 
        temp = arr[i]; 
        arr[i] = arr[j]; 
        arr[j] = temp; 
        i++; 
        j--; 
       } 
      } while (i <= j); 
      if (left < j) quick_Sort(arr, left, j); 
      if (i < right) quick_Sort(arr, i, right); 

     return arr; 

    } 
+0

Von dem Segment, das ich gepostet habe. 8, 11, 12 15, 16, 16, 17. – KevinSpacey

+0

Dieser Code wird nicht kompiliert. – usr

+0

Weil dies ein Segment eines viel größeren Programms ist. – KevinSpacey

Antwort

1

Das Problem ist, dass Sie double s für Ihren Array-Indizes verwenden - die angeblich int s sein, z.B.

arr[i] 

Sie benötigen int Werte für die Indizes verwendet werden, z.B .:

int i; 
i = Convert.ToInt32(left); 

Oder nur int anstelle von double für alle Variablen (je nachdem, wie Ihr Programm funktioniert). Ich bin mir nicht sicher, was am besten ohne mehr Informationen ist.

Verwandte Themen