Skip to content
Snippets Groups Projects
Commit a4350684 authored by 13513004's avatar 13513004
Browse files

mergesort func

parent 51486e90
Branches save-debug2
Tags
No related merge requests found
#include <stdlib.h>
void merge(int* arr, int l, int m, int r, int* tmp)
{
int last = l;
// merge to tmp
int i = l, j = m;
for (; i < m && j < r;)
{
if (arr[i] > arr[j])
tmp[last++] = arr[j++];
else
tmp[last++] = arr[i++];
}
while (i < m) tmp[last++] = arr[i++];
while (j < r) tmp[last++] = arr[j++];
// move to origin
while (last > l)
{
--last;
arr[last] = tmp[last];
}
}
void mergesort(int* arr, int l, int r, int* tmp)
{
if (l + 2 > r) return; // base
int m = (l + r) >> 1;
mergesort(arr, l, m, tmp);
mergesort(arr, m, r, tmp);
merge(arr, l, m, r, tmp);
}
int main(int argc, char const *argv[])
{
int x[] = {3, 5, 2, 6,8, 9, 1,0};
int* tmp = (int*) malloc(sizeof(int) * 8);
mergesort(x, 0, 8, tmp);
for (int i = 0; i < 8; ++i)
{
printf("%d ", x[i]);
}
if (tmp != NULL) free(tmp);
return 0;
}
\ No newline at end of file
#daftar host
localhost
167.205.35.26
#167.205.35.28
#167.205.35.29
#167.205.35.30
#167.205.35.31
#167.205.35.32
#167.205.35.33
#167.205.35.34
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment