ben bu fonksiyonları kullanarak bir test kodunda yazdığım fonksiyonları test ediyorum QuickSort kısmında herhangi bir hata almıyorum fakat merge sort kısmında biraz çıkmaza girdim test kodunu çalıştırdığımda “malloc(): corrupted top size” diye bir hata alıyorum. Yardımcı olabilirseniz çok sevinirim.
#include "sort_header.h"
void merge(int* src, int* dst, int start, int mid, int end){
int i=start;
int j=mid;
int index=end;
while(i<mid && j<end){
if(src[i] < src[j]){
dst[index] = src[i];
i++;
}
else{
dst[index] = src[j];
j++;
}
index++;
}
while(i<mid){
dst[index++]=src[i++];
}
while(j<end){
dst[index++]=src[j++];
}
}
void merge_split(int* src, int* dst, int start, int end){
if(end-start<=1){
return;
}
int midpoint = (end+start)/2;
merge_split(dst,src,start,midpoint);
merge_split(dst,src,midpoint,end);
merge(dst,src,start,midpoint,end);
}
void merge_sort(int* array, int array_size){
int* copy_array=array;
merge_split(array, copy_array,0,array_size);
}
int partition(int* array, int start, int end){
int pivot=array[(start+end)/2];
int low_index=start-1;
int high_index=end+1;
while(true){
while(array[++low_index]<pivot);
while(array[--high_index]>pivot);
if(low_index>=high_index)
return high_index;
int temp =array[high_index];
array[high_index]=array[low_index];
array[low_index]=temp;
}
}
void quick_sort(int* array, int start, int end){
if(start>=0 && end>=0 && end>start){
int partition_pas=partition(array, start, end);
quick_sort(array, start, partition_pas);
quick_sort(array, partition_pas+1, end);
}
}
void quicksort(int* array, int array_size){
quick_sort(array,0,array_size-1);
}