fuliver123

Sắp xếp trộn

Nov 7th, 2015
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.41 KB | None | 0 0
  1. #include<conio.h>
  2. #include<stdio.h>
  3. #include<time.h>
  4. #include<stdlib.h>
  5. int a[1000],n0,k_dem=1;
  6. int ran(int a1, int a2)
  7. {  
  8.     return rand()%(a2-a1+1)+a1;    
  9. }
  10.  
  11. int inmang(int a[], int n)
  12. {
  13.     int i;
  14.     for (i=1;i<=n;i++)
  15.         printf("%d ",a[i]);
  16.     return 0;
  17. }
  18. int merge(int first, int mid, int last)
  19. {
  20.     int m[1000],n[1000],i=1,j=1,k,i0,j0;
  21.     for (k=first;k<=mid;k++)
  22.         m[i++]=a[k];
  23.     for (k=mid+1;k<=last;k++)
  24.         n[j++]=a[k];
  25.     i0=i; j0=j; i=1; j=1;
  26.     for (k=first;k<=last;k++)
  27.     {
  28.         if (j==j0 || m[i]<=n[j] && i!=i0) a[k]=m[i++];
  29.         else if (i==i0 || m[i]>n[j]) a[k]=n[j++];
  30.     }
  31.     printf("\nStep %2d, conquer %2d-%2d, %2d-%2d: ",k_dem++,first,mid,mid+1,last); inmang(a,n0);
  32.     return 0;
  33. }
  34.  
  35. int merge_sort(int first, int last)
  36. {
  37.     int mid;
  38.     if (first<last)
  39.     {
  40.         mid=(first+last)/2;
  41.         printf("\nStep %2d, divide: %2d-%2d, %2d-%2d: ",k_dem++,first,mid,mid+1,last);
  42.         inmang(a,n0);
  43.         merge_sort(first,mid);
  44.         merge_sort(mid+1,last);
  45.         merge(first,mid,last);
  46.     }
  47.     return 0;
  48. }
  49.  
  50. int main()
  51. {
  52.     int a1,a2,i;
  53.     srand((unsigned)(time(NULL)));
  54.     printf("Nhap vao so phan tu: "); scanf("%d",&n0);
  55.     printf("Nhap vao gia tri dau: "); scanf("%d",&a1);
  56.     printf("Nhap vao gia tri cuoi: "); scanf("%d",&a2);
  57.     for (i=1;i<=n0;i++)
  58.         a[i]=ran(a1,a2);
  59.     printf("Mot mang da duoc tao ngau nhien ra la: \n"); inmang(a,n0);
  60.     merge_sort(1,n0);
  61.     printf("\n\nMang sau khi duoc sap xep la: \n"); inmang(a,n0);
  62.     getch();
  63.     return 0;
  64.    
  65. }
Advertisement
Add Comment
Please, Sign In to add comment