Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<conio.h>
- #include<stdio.h>
- #include<time.h>
- #include<stdlib.h>
- int a[1000],n0,k_dem=1;
- int ran(int a1, int a2)
- {
- return rand()%(a2-a1+1)+a1;
- }
- int inmang(int a[], int n)
- {
- int i;
- for (i=1;i<=n;i++)
- printf("%d ",a[i]);
- return 0;
- }
- int merge(int first, int mid, int last)
- {
- int m[1000],n[1000],i=1,j=1,k,i0,j0;
- for (k=first;k<=mid;k++)
- m[i++]=a[k];
- for (k=mid+1;k<=last;k++)
- n[j++]=a[k];
- i0=i; j0=j; i=1; j=1;
- for (k=first;k<=last;k++)
- {
- if (j==j0 || m[i]<=n[j] && i!=i0) a[k]=m[i++];
- else if (i==i0 || m[i]>n[j]) a[k]=n[j++];
- }
- printf("\nStep %2d, conquer %2d-%2d, %2d-%2d: ",k_dem++,first,mid,mid+1,last); inmang(a,n0);
- return 0;
- }
- int merge_sort(int first, int last)
- {
- int mid;
- if (first<last)
- {
- mid=(first+last)/2;
- printf("\nStep %2d, divide: %2d-%2d, %2d-%2d: ",k_dem++,first,mid,mid+1,last);
- inmang(a,n0);
- merge_sort(first,mid);
- merge_sort(mid+1,last);
- merge(first,mid,last);
- }
- return 0;
- }
- int main()
- {
- int a1,a2,i;
- srand((unsigned)(time(NULL)));
- printf("Nhap vao so phan tu: "); scanf("%d",&n0);
- printf("Nhap vao gia tri dau: "); scanf("%d",&a1);
- printf("Nhap vao gia tri cuoi: "); scanf("%d",&a2);
- for (i=1;i<=n0;i++)
- a[i]=ran(a1,a2);
- printf("Mot mang da duoc tao ngau nhien ra la: \n"); inmang(a,n0);
- merge_sort(1,n0);
- printf("\n\nMang sau khi duoc sap xep la: \n"); inmang(a,n0);
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment