mirror of
https://github.moeyy.xyz/https://github.com/TheAlgorithms/C.git
synced 2023-10-11 15:56:24 +08:00
renamed conflicting mergesort
function
This commit is contained in:
parent
cee2468506
commit
dc5d25690b
@ -1,91 +1,92 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
void swap (int *a,int *b)//To swap the variables//
|
void swap(int *a, int *b) //To swap the variables//
|
||||||
{
|
{
|
||||||
int t;
|
int t;
|
||||||
t= *a;
|
t = *a;
|
||||||
*a=*b;
|
*a = *b;
|
||||||
*b=t;
|
*b = t;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void merge(int a[],int l,int r,int n)//To merge //
|
void merge(int a[], int l, int r, int n) //To merge //
|
||||||
{ int *b = (int*)malloc(n*sizeof(int));
|
{
|
||||||
int c=l;
|
int *b = (int *)malloc(n * sizeof(int));
|
||||||
int p1,p2;
|
int c = l;
|
||||||
p1 = l;p2=((l+r)/2)+1;
|
int p1, p2;
|
||||||
while ((p1<((l+r)/2)+1) &&(p2<r+1))
|
p1 = l;
|
||||||
{ if(a[p1] <= a[p2])
|
p2 = ((l + r) / 2) + 1;
|
||||||
{ b[c++] = a[p1];
|
while ((p1 < ((l + r) / 2) + 1) && (p2 < r + 1))
|
||||||
p1++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{b[c++] = a[p2];p2++;}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
if (p2 == r+1)
|
|
||||||
{
|
{
|
||||||
while ((p1<((l+r)/2)+1))
|
if (a[p1] <= a[p2])
|
||||||
{
|
{
|
||||||
b[c++] = a[p1];
|
b[c++] = a[p1];
|
||||||
p1++;
|
p1++;
|
||||||
};
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
b[c++] = a[p2];
|
||||||
|
p2++;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (p2 == r + 1)
|
||||||
|
{
|
||||||
|
while ((p1 < ((l + r) / 2) + 1))
|
||||||
|
{
|
||||||
|
b[c++] = a[p1];
|
||||||
|
p1++;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
while ((p2<r+1))
|
while ((p2 < r + 1))
|
||||||
{
|
{
|
||||||
b[c++] = a[p2];
|
b[c++] = a[p2];
|
||||||
p2++;
|
p2++;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
for (c=l;c<r-l+1;c++)
|
for (c = l; c < r - l + 1; c++)
|
||||||
a[c] = b[c];
|
a[c] = b[c];
|
||||||
|
|
||||||
}
|
}
|
||||||
void mergesort(int a[],int n,int l,int r)
|
|
||||||
|
void merge_sort(int *a, int n, int l, int r)
|
||||||
{
|
{
|
||||||
if (r-l == 1 )
|
if (r - l == 1)
|
||||||
|
{
|
||||||
|
if (a[l] > a[r])
|
||||||
|
swap(&a[l], &a[r]);
|
||||||
|
}
|
||||||
|
else if (l == r)
|
||||||
{
|
{
|
||||||
if (a[l]>a[r])
|
|
||||||
swap(&a[l],&a[r]);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(l==r)
|
|
||||||
{}
|
|
||||||
else
|
else
|
||||||
{mergesort(a,n,l,(l+r)/2);
|
{
|
||||||
mergesort(a,n,((l+r)/2)+1,r);
|
merge_sort(a, n, l, (l + r) / 2);
|
||||||
merge(a,l,r,n);
|
merge_sort(a, n, ((l + r) / 2) + 1, r);
|
||||||
|
merge(a, l, r, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
int main(void) { //main function//
|
int main(void)
|
||||||
int *a,n,i;
|
{ //main function//
|
||||||
scanf("%d",&n);
|
int *a, n, i;
|
||||||
a = (int*)malloc(n*sizeof(int));
|
scanf("%d", &n);
|
||||||
for (i=0;i<n;i++)
|
a = (int *)malloc(n * sizeof(int));
|
||||||
{
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
scanf("%d",&a[i]);
|
|
||||||
|
scanf("%d", &a[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
merge_sort(a, n, 0, n - 1);
|
||||||
|
for (i = 0; i < n; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
printf(" %d", a[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
free(a);
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
mergesort(a,n,0,n-1);
|
|
||||||
for (i=0;i<n;i++)
|
|
||||||
{
|
|
||||||
|
|
||||||
printf(" %d",&a[i]);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user