Я хочу отсортировать массив. SO я написал эту сортировку слияния, она не делает то, что я хочу, чтобы i.e сортировать, просто киоски! Я перехожу по алгоритму снова и снова, и я чувствую, что это так правильно, но нет! , пожалуйста, взгляните и скажите мне, что может быть неправильным.В этом объединении есть что-то неправильное
void mergeSort(int *arr, int low, int high){
int mid = (low+high)/2;
while(low<high){
mergeSort(arr, low, mid);
mergeSort(arr, mid+1, high);
merge(arr, low, high, mid);
}
}
void merge(int *arr,int low, int high, int mid){
int i =low,j=mid+1,k=0;
int temp[50]; // should i new/malloc this with size of (high -low +1) ?
while(i<=mid && j<=high){
if(arr[i]<arr[j])
temp[k++] = arr[i++];
else
temp[k++] = arr[j++];
}
while(i<=mid)
temp[k++] = arr[i++];
while(j<=high)
temp[k++] = arr[j++];
for(int x = 0; x<=high; x++){
arr[x]=temp[x];
}
}
Просить людей обнаружить ошибки в коде неэффективно. Вы должны использовать отладчик (или добавить заявления печати), чтобы изолировать проблему, а затем построить [минимальный тестовый сценарий] (http://sscce.org). –
'while (низкий <высокий) {' <- когда вы ожидаете завершения цикла? –
u сейчас, ** debug ** it –