Я сделал функцию сортировки слиянием:
void mergeSort(int emotionCount[], int low, int high){
int i=0,k=0;
//I did this to see the value inside the array, and I always got a garbage value
//when i=0, and the first correct value when i=1. I made a for loop here to
//see the values in the array in debugging mode in netbean.
for (i=0;i<=high;i++){
}
if (low == high){
emotionCount[low]=emotionCount[low];
}else{
int mid = (low+high)/2;
mergeSort(emotionCount,low,mid);
mergeSort(emotionCount,mid+1,high);
merge(emotionCount, low,mid, high); }
}
void merge(int emotionCount[], int low,int mid, int high)
{
int temp[high-low+1];
int i=low,k=mid+1, j=high, n=0;
int comparing=emotionCount[k];
while (i<=mid || k<=high){
while (emotionCount[i]<comparing)
{
temp[n]=emotionCount[i];
i++;
n++;
}
comparing=emotionCount[i];
temp[n]=emotionCount[k];
k++;
i++;
n++;
while (emotionCount[k]<comparing){
temp[n]=emotionCount[k];
k++;
n++;
}
comparing=emotionCount[k];
temp[n]=emotionCount[i];
k++;
i++;
n++;
}
while (i<=mid)
{
temp[n]=emotionCount[i];
i++;
n++;
}
while (k<=high)
{
temp[n]=emotionCount[k];
k++;
n++;
}
while (low<=high)
{
emotionCount[low]=temp[i];
low++;
}
}
И в основном, я передаю массив:
int array[10] = {0,5,8,2,4,6,8,2,20,25};
//number 9 because the highest position is 9. After this, array[10] is supposed to be sorted.
mergeSort(array ,0, 9);
Ну, метод был довольно длинным, но я хочу реализоватьэто сам.По сути, я передаю массив в функцию mergeSort, и если он не имеет минимального размера (равного 1), он будет продолжать передавать этот массив.Что меня беспокоит, так это то, что когда я передаю ему массив, первое значение всегда является значением мусора (например, значением адреса или чего-то в этом роде).Только после того, как я = 1, он даст первое значение массива.Я не понимаюКроме того, каждый раз при выходе из более низкой функции mergeSort для продолжения работы с более высокими значениями все отсортированные значения в массиве становятся равными 0.
Редактирование: переменная k просто используется для хранения значения массива, чтобы увидеть значение массива.когда я в режиме отладки.Я удалил переменную k в функции mergeSort, чтобы устранить путаницу.