Advertisement
Guest User

ksksks

a guest
Oct 22nd, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3.  
  4. void merge(int V[],int l,int m,int r){
  5. int n1=m-l+1;
  6. int n2=r-m;
  7.  
  8. int L[n1],R[n2];
  9. int i;
  10.  
  11. for(i=0;i<n1;i++){
  12. L[i]=V[l-1+i];
  13. }
  14. for(i=0;i<n2;i++){
  15. R[i]=V[m+i];
  16. }
  17.  
  18. int i2=0,k=l-1;
  19. i=0;
  20.  
  21. while(i<n1&& i2<n2){
  22. if(L[i]<R[i2]){
  23. V[k]=L[i];
  24. i++;
  25. }else{
  26. V[k]=R[i2];
  27. i2++;
  28. }
  29. k++;
  30. }
  31. while(i<n1){
  32. V[k]=L[i];
  33. i++;
  34. k++;
  35. }
  36.  
  37. while(i2<n2){
  38. V[k]=R[i2];
  39. i2++;
  40. k++;
  41. }
  42.  
  43. }
  44.  
  45. void mergesort (int * v, int p, int r) {
  46. int q;
  47. if (p < r) {
  48. q = (p + r) / 2;
  49. mergesort (v, p, q);
  50. mergesort (v, q+1, r);
  51. merge (v, p, q, r);
  52. }
  53. }
  54.  
  55. int main(){
  56. int n;
  57. scanf("%d",&n);
  58. int i;
  59. int *vet=(int *)malloc(sizeof(int)*n);
  60.  
  61. for(i=0;i<n;i++){
  62. scanf("%d",&vet[i]);
  63. }
  64.  
  65. mergesort(vet,1,n);
  66.  
  67. for(i=0;i<n;i++){
  68. printf("%d ",vet[i]);
  69. }printf("\n");
  70.  
  71. free(vet);
  72. return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement