|
|
|
@ -168,30 +168,19 @@ int main()
|
|
|
|
|
~~~
|
|
|
|
|
归并排序(时间复杂度O(nlogn))
|
|
|
|
|
~~~
|
|
|
|
|
int merge(int r[],int s[],int left,int mid,int right)
|
|
|
|
|
void merge_sort(int r[],int s[],int left,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++];
|
|
|
|
|
return 0;
|
|
|
|
|
int mid;
|
|
|
|
|
int t[20];
|
|
|
|
|
if(left==right)
|
|
|
|
|
s[left]=r[right];
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
mid=(left+right)/2;
|
|
|
|
|
merge_sort(r,t,left,mid);
|
|
|
|
|
merge_sort(r,t,mid+1,right);
|
|
|
|
|
merge(t,s,left,mid,right);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|