Я пытаюсь отсортировать с помощью алгоритма быстрой сортировки массив двойных типов.Я могу отсортировать int / unsigned int, но с двойным Я получаю сообщение об ошибке: Неверная подписка для типов для double * [double] для индекса массива:
Я реализовал это с unsigned int, и этоотлично работает
double PartitionArray(double* arr, double p, double r){
double x = arr[p];
UI i=p, j=r, w=0;
while(true)
{
while(arr[j]>x)
j--;
while(arr[i]<x)
i++;
if(i<j){
w=arr[i];
arr[i]=arr[j];
arr[j] = w;
i++;
j--;
}
else
return j;
}
}
void QuickSort(double* arr, double p, double r){
double q;
if(p<r){
q = PartitionArray(arr, p, r);
QuickSort(arr, p, q);
QuickSort(arr, q+1, r);
}
}
Массив, который должен быть отсортирован, исходит из этой функции:
double* GenerateArray(UI nSize){
double *arrRnd=nullptr;
arrRnd = new double [nSize];
double rndVal=0;
std::uniform_real_distribution<double> unifDbl(min_val, max_val);
std::default_random_engine reng;
for(UI i=0; i<baseElements; i++){
rndVal = unifDbl(reng);
arrRnd[i] = rndVal;
}
return arrRnd;
delete [] arrRnd;
}
Ошибка указывает на:
double x = arr[p];
ВФункция PartitionArray ().
Пожалуйста, сообщите, если это возможно.Заранее спасибо ...