## Need help with merge sort algorithm

Hello.

I am trying to code a merge sort algoritm, using my knowledge of C++. I have made some code but it is not working. It is giving some random results.

Can you please look at my code and see improvements I can make.

Thanks?

Code:
```#include <cstdlib>
#include <iostream>

using namespace std;

void print(int *niz) {
for (int f1=0; niz[f1]!='\0'; f1++) {
cout << niz[f1] << " ";
}
cout << endl;
}

void merge(int *niz, int low, int medium, int high) {
int *niz2 = new int[high-low];

int bottom = low;
int top = medium-1;

for (int f1=low; f1<high; f1++) {
if(bottom>medium) {
niz2[f1-low] = niz[top++];
}
else if(top>high) {
niz2[f1-low] = niz[bottom++];
}
else if(niz[bottom]<niz[top]) {
niz2[f1-low] = niz[bottom++];
}
else {
niz2[f1-low] = niz[top++];
}
}

for (int f1=low; f1<high; f1++) {
niz[f1]=niz2[f1-low];
}

delete [] niz2;
}

void merge_sort(int *niz, int low, int high) {
if(low < high) {
int middle = (high+low)/2;
merge_sort(niz, low, middle);
merge_sort(niz, middle+1, high);
merge(niz, low, middle, high);
}
}

int main(int argc, char** argv) {

srand((unsigned)time(0));

int velicina = 10;
int *niz = new int[velicina];

for (int f1=0; f1<velicina; f1++) {
niz[f1] = rand()%10+1;
}

print(niz);

merge_sort(niz, 0, velicina-1);

print(niz);
cout << "kraj" << endl;

return 0;
}```