|
|
|
@ -168,6 +168,30 @@ int main()
|
|
|
|
|
~~~
|
|
|
|
|
归并排序(时间复杂度O(nlogn))
|
|
|
|
|
~~~
|
|
|
|
|
void merge(int r[],int s[],int left,int mid,int right)
|
|
|
|
|
{
|
|
|
|
|
int i,j,k;
|
|
|
|
|
i=left;
|
|
|
|
|
j=mid+1;
|
|
|
|
|
k=left;
|
|
|
|
|
while((i<=mid)&&(j<=right))
|
|
|
|
|
if(r[i]<=r[j])
|
|
|
|
|
{
|
|
|
|
|
s[k] = r[i];
|
|
|
|
|
i++;
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
s[k]=r[j];
|
|
|
|
|
j++;
|
|
|
|
|
k++;
|
|
|
|
|
}
|
|
|
|
|
while(i<=mid)
|
|
|
|
|
s[k++]=r[i++];
|
|
|
|
|
while(j<=right)
|
|
|
|
|
s[k++]=r[j++];
|
|
|
|
|
}
|
|
|
|
|
void merge_sort(int r[],int s[],int left,int right)
|
|
|
|
|
{
|
|
|
|
|
int mid;
|
|
|
|
|