2016-04-07 20 views
0

Çifte dönüştüğüm bir dize dizim var, bunu aşağıdaki quicksort algoritmasına aktarıyorum ve çift diziye sahip olmamasına rağmen int'yi double yapamazken birden çok hata alıyorum. Sol ve sağ sırasıyla 0 ve arr.Length - 1'dir. int s gerekiyordu, mesela -Çifte sıralama yapmak için quicksort kullanırken hatalar

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

Gönderdiğim segmentin. 8, 11, 12 15, 16, 16, 17. – KevinSpacey

+0

Bu kod derlenmiyor. – usr

+0

Çünkü bu daha büyük bir programın bir parçasıdır. – KevinSpacey

cevap

1

sorun size dizi indisleri için double s kullanarak olmasıdır

arr[i] 

Sen .: senin endeksler için int değerleri kullanmak

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

Ya da sadece (senin Programın nasıl çalıştığını bağlı olarak) tüm değişkenler için int yerine double kullanmak örn gerekir. Daha fazla bilgi olmadan en iyisi olduğundan emin değilim.