谁能告诉我一个折半排序法的算法

来源:百度知道 编辑:UC知道 时间:2024/05/30 02:41:35
谁能告诉我一个折半排序法的算法,谢谢您了!

拆半排序,你是说归并排序么?

#include <stdio.h>
void merge(int a[],int p,int q,int r)
{
int n1=q-p+1,n2=r-q,i,j,k;
int l[1002],R[1002];
for (i=1;i<=n1;i++)l[i]=a[p+i-1];
for (j=1;j<=n2;j++)R[j]=a[q+j];
R[n2+1]=l[n1+1]=999999;
i=j=1;
for (k=p;k<=r;k++)
{
if (l[i]<=R[j])
{
a[k]=l[i];
i++;
}
else
{
a[k]=R[j];
j++;
}
}
}
void mergesort(int a[],int p,int r)
{
int q;
if (p<r)
{
q=(p+r)/2;
mergesort(a,p,q);
mergesort(a,q+1,r);
merge(a,p,q,r);
}
}
int main()
{
int a[1001],t,n,i;
scanf("%d",&t);
while (t--)
{
scanf("%d",&n);
for (i=1;i<=n;i++