Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void merge(ElementType* arrayToSort, int* tempArray, int start, int end, Statistics* statistics) {
- // Diverse variabler för hantering av båda del-arrayerna
- int leftEnd = (end + start) / 2;
- int rightBegin = leftEnd + 1;
- int size = end + start;
- int left = start;
- int right = rightBegin;
- int tempIndex = start;
- // Loopar tills en utav del-arrayerna tar slut
- while (lessThanOrEqualTo(left, leftEnd, statistics) && lessThanOrEqualTo(right, end, statistics)) {
- if (lessThan(arrayToSort[left], arrayToSort[right], statistics)) {
- tempArray[tempIndex] = arrayToSort[left];
- left++;
- tempIndex++;
- }
- else {
- tempArray[tempIndex] = arrayToSort[right];
- right++;
- tempIndex++;
- }
- }
- // Endast en utav dessa while-loopar kommer att exekveras eftersom att en utan del-arrayerna är tom.
- while (lessThanOrEqualTo(left, leftEnd, statistics)) {
- tempArray[tempIndex] = arrayToSort[left];
- left++;
- tempIndex++;
- }
- while (lessThanOrEqualTo(right, end, statistics)) {
- tempArray[tempIndex] = arrayToSort[right];
- right++;
- tempIndex++;
- }
- // Koperia över från den temporära arrayen till den vanliga
- for (int i = 0; lessThan(i, size, statistics); i++) {
- arrayToSort[i] = tempArray[i];
- }
- }
- static void mergeSplit(ElementType* arrayToSort, int* tempArray, int start, int end, Statistics* statistics) {
- // Om start och end är samma, returnera (Brutit ned för mycket)
- if (equalTo(start, end, statistics))
- return;
- // Räkna ut mitten för att kunna splitta array'en
- int mid = (start + end) / 2;
- // Vänster Sida
- mergeSplit(arrayToSort, tempArray, start, mid, statistics);
- // Höger Sida
- mergeSplit(arrayToSort, tempArray, mid + 1, end, statistics);
- // Merga delArrayerna
- merge(arrayToSort, tempArray, start, end, statistics);
- }
- static void mergeSort(ElementType* arrayToSort, unsigned int size, Statistics* statistics){
- int* temp = calloc(size, sizeof(int));
- mergeSplit(arrayToSort, temp, 0, size - 1, statistics);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement