[英]Mergesort is giving semi-random unsorted numbers in output
我正在為 class 實現排序算法,mergesort 是唯一讓我難過的算法。 我遇到了段錯誤和其他問題,但是一旦我“解決”了這些問題,我現在就卡在數組中,給出重復值,memory 地址,並且沒有排序。 代碼如下:
void merge(int* array, int first, int mid, int last){
int first1 = first;
int tempArr[last + 1];
int first2 = mid + 1;
int last1 = mid;
int last2 = last;
int index = first1;
for(; (first1 <= last1) && (first2 <= last2); ++index){
if(array[first1] < array[first2]){
tempArr[index] = array[first1];
++first1;
}else {
tempArr[index] = array[first2];
++first2;
}
}
for(; first1 <= last1; ++first1, ++index){
tempArr[index] = array[first1];
}
for(; first2 <= last2; ++first2, ++index){
tempArr[index] = array[first2];
}
//assigns sorted values to original array
for(index = 0; index <= last; ++index){
array[index] = tempArr[index];
}
}
void mergeSort(int *array, int first, int last){
int mid = (first + last) / 2;
if (first < last){
mergeSort(array, first, mid);
mergeSort(array, mid+1, last);
merge(array, first, mid, last);
}
}
輸入:
array[] = {99, 23, 87, 67, 34, 12, 9, 44, 67, 73, 21, 71, 65, 48, 22, 89, 5, 11, 55, 31, 61, 29, 19, 49, 51};
output:
19 23 22 22 49 51 51 61 23 22 61 23 22 18894848128 32767 23 1889484128 32767 23 19 23 22 49 51
任何幫助表示贊賞。 ps 這是我第一次發帖,對於格式上的任何錯誤深表歉意。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.