Cannot see what is wrong with my code: Currently trying to sort an array using merge sort.
Also I am unsure of how to work out the Big-0 or how many procedures it requires to work this out.Code:#include <iostream> #define SIZE 4 void mergeSort(float arraySorted[], float arrayTemp[], int LHS, int RHS); void mergeBack(float arraySorted[], float arrayTemp[], int LHS, int middle, int RHS); void main(){ int Counter=0; float arrayOne[SIZE] = {65, -72, 54, 238}; float arrayTwo[SIZE]; for (Counter=SIZE-1;Counter>=0;Counter--){ std::cout << arrayOne[Counter] << std::endl; } std::cout << "Something about sorting:" << std::endl; mergeSort(arrayOne, arrayTwo, 0, SIZE-1); for (Counter=SIZE-1;Counter>=0;Counter--){ std::cout << arrayOne[Counter] << std::endl; } std::cout << "Blah" << std::endl; } void mergeSort(float arraySorted[], float arrayTemp[], int LHS, int RHS){ int Counter, middle; if (RHS > LHS){ middle = (LHS + RHS) / 2; mergeSort(arraySorted, arrayTemp, LHS, middle); mergeSort(arraySorted, arrayTemp, (middle+1), RHS); mergeBack(arraySorted, arrayTemp, LHS, middle, RHS); } } void mergeBack(float arraySorted[], float arrayTemp[], int LHS, int middle, int RHS){ int LHSEnd, arraySize, arrayPosition, Counter = 0; LHSEnd = (middle -1); arrayPosition = (LHS); while ((LHS <= LHSEnd) && (middle <= RHS)){ if (arraySorted[LHS] <= arraySorted[middle]){ arrayTemp[arrayPosition] = arraySorted[LHS]; arrayPosition = arrayPosition + 1; LHS = LHS + 1; }else{ arrayTemp[arrayPosition] = arraySorted[LHS]; arrayPosition = arrayPosition + 1; middle = middle + 1; } } while(LHS <= LHSEnd){ arrayTemp[arrayPosition] = arraySorted[LHS]; LHS = LHS + 1; arrayPosition = arrayPosition + 1; } while(middle <= RHS){ arrayTemp[arrayPosition] = arraySorted[middle]; middle = middle + 1; arrayPosition = arrayPosition + 1; } LHS=-SIZE-1; for(Counter=SIZE;Counter>=0;Counter--){ arraySorted[LHS] = arrayTemp[LHS]; LHS = LHS + 1; } }
If anyone can help me with either of my problems I would be very grateful.



LinkBack URL
About LinkBacks



