//ShellSort 希尔排序
void ShellSort(int Data[],int n)
{
int i,j,gap;
int temp;
gap=n/2;
while(gap>0)
{
for(i=gap;i<n;i++)
{
temp=Data[i];
j=i-gap;
while(j>=0 && temp<Data[j])
{
Data[j+gap]=Data[j];
j=j-gap;
}
Data[j+gap]=temp;
//j=j-gap;
}
gap=gap/2;
}
}
//QuickSort 快速排序
void QuickSort(int Data[],int low,int high)
{
if(low<high)
{
int i=low,j=high;
int temp=Data[low];
while(i!=j)
{
while(j>i && Data[j]>temp)
j--;
if(j>i)
{
Data[i]=Data[j];
i++;
}
while(i<j && Data[i]<temp)
i++;
if(i<j)
{
Data[j]=Data[i];
j--;
}
}
//now i==j
Data[i]=temp;
//data[i] partition the data into two part
QuickSort(Data,low,i-1);
QuickSort(Data,i+1,high);
}
}
//HeapSort 堆排序
void SiftBig(int Data[],int low,int high)
{
int i=low,j=2*i+1;
int temp=Data[i];
while(j<high)
{
if(j<high-1 && Data[j]<Data[j+1])
j++;//j指两个子结点大的那个
if(temp<Data[j])
{
Data[i]=Data[j];
i=j;//换哪个结点,接下来就调那个结点子树
j=2*i+1;
}
else
break;
}
Data[i]=temp;
}
void SiftSmall(int Data[],int low,int high)
{
int i=low,j=2*i+1;
int temp=Data[i];
while(j<high)
{
if(j<high-1 && Data[j]>Data[j+1])
j++;//j指两个子结点小的那个
if(temp>Data[j])
{
Data[i]=Data[j];
i=j;//换哪个结点,接下来就调那个结点子树
j=2*i+1;
}
else
break;
}
Data[i]=temp;
}
void HeapSort(int Data[], int n)
{
int i,temp;
for(i=(n-1)/2;i>=0;i--)//调整堆
SiftSmall(Data,i,n);
for(i=n-1;i>0;i--)
{
temp=Data[0];
Data[0]=Data[i];
Data[i]=temp;
SiftSmall(Data,0,i);
}
}
//MergeSort 二路归并排序
void Merge(int Data[],int low,int mid,int high)
{
int *A1;
int i=low,j=mid+1,k=0;
A1=(int *)malloc((high-low+1)*sizeof(int));//too frequently, not a good way
while(i<=mid && j<=high)
if(Data[i]<Data[j])
A1[k++]=Data[i++];
else
A1[k++]=Data[j++];
while(i<=mid)
A1[k++]=Data[i++];
while(j<=high)
A1[k++]=Data[j++];
for(k=0,i=low;i<=high;k++,i++)
Data[i]=A1[k];
free(A1);//
}
void MergePass(int Data[],int length,int n)
{
int i;
for(i=0;i+2*length-1<n;i=i+2*length)
Merge(Data,i,i+length-1,i+2*length-1);
if(i+length<n)
Merge(Data,i,i+length-1,n-1);
}
void MergeSort(int Data[],int n)
{
int length;
for(length=1;length<n;length=2*length)
MergePass(Data,length,n);
}
adsort
最新推荐文章于 2024-05-03 21:36:07 发布