归并排序

 1 #include<stdio.h>
 2 #include<iostream>
 3 using namespace std;
 4 int map[100];
 5 void merge_sort(int q[],int l,int r)
 6 {
 7     if(l>=r)
 8     return;
 9     int mid=l+r>>1;
10     merge_sort(q,l,mid),merge_sort(q,mid+1,r);
11     int cnt=0,i=l,j=mid+1;
12     while(i<=mid&&j<=r)
13     {
14         if(q[i]<=q[j])
15         map[cnt++]=q[i++];
16         else
17         map[cnt++]=q[j++];
18     }
19     while(i<=mid)
20     map[cnt++]=q[i++];
21     while(j<=r)
22     map[cnt++]=q[j++];
23     for(i=l,j=0;i<=r;j++,i++)
24     q[i]=map[j];
25 }
26 int main()
27 {
28     int a[100];
29     int n;
30     cin>>n;
31     for(int i=0;i<n;i++)
32     cin>>a[i];
33     merge_sort(a,0,n-1);
34     for(int i=0;i<n;i++)
35     cout<<a[i]<<endl;
36     return 0;
37 }

 

posted @ 2022-04-21 12:39  xxj112  阅读(17)  评论(0)    收藏  举报