Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<stdlib.h>
- void merge(int V[],int l,int m,int r){
- int n1=m-l+1;
- int n2=r-m;
- int L[n1],R[n2];
- int i;
- for(i=0;i<n1;i++){
- L[i]=V[l-1+i];
- }
- for(i=0;i<n2;i++){
- R[i]=V[m+i];
- }
- int i2=0,k=l-1;
- i=0;
- while(i<n1&& i2<n2){
- if(L[i]<R[i2]){
- V[k]=L[i];
- i++;
- }else{
- V[k]=R[i2];
- i2++;
- }
- k++;
- }
- while(i<n1){
- V[k]=L[i];
- i++;
- k++;
- }
- while(i2<n2){
- V[k]=R[i2];
- i2++;
- k++;
- }
- }
- void mergesort (int * v, int p, int r) {
- int q;
- if (p < r) {
- q = (p + r) / 2;
- mergesort (v, p, q);
- mergesort (v, q+1, r);
- merge (v, p, q, r);
- }
- }
- int main(){
- int n;
- scanf("%d",&n);
- int i;
- int *vet=(int *)malloc(sizeof(int)*n);
- for(i=0;i<n;i++){
- scanf("%d",&vet[i]);
- }
- mergesort(vet,1,n);
- for(i=0;i<n;i++){
- printf("%d ",vet[i]);
- }printf("\n");
- free(vet);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement