Dim mid為整數= 0
如果先& lt最後壹次
mid =(名字+姓氏)\ 2
MergeSort(Array,first,mid);
MergeSort(Array,mid+1,last);
Merge(Array,first,mid,last);
如果…就會結束
末端接頭
/*
下面的示例代碼實現了合並操作。Array[]是壹個元素序列,按照從索引p到位置q,以及從(q+1)到r的升序排列,merge()函數將這兩個排序後的子序列合並成壹個排序後的序列。結果放在數組中。
*/
/**
* 0 & lt= p & lt= q & ltr,子陣列陣列[p..q]和數組[q+1..r]已經排序。
merge()函數將兩個子數組合並成壹個排序後的數組。
*/
void Merge(int array[],int p,int q,int r)
{
int i,k;
int begin1,end1,begin2,end2
int * temp =(int *)malloc((r-p+1)* sizeof(int));
begin 1 = p;
end 1 = q;
begin 2 = q+1;
end 2 = r;
k = 0;
while((begin 1 & lt;= end 1);& amp(begin2 & lt= end2))
{
if(array[begin 1]& lt;= array[begin2]){
temp[k]= array[begin 1];
begin 1++;
}
其他
{
temp[k]= array[begin 2];
begin 2++;
}
k++;
}
while(begin 1 & lt;= end 1 | | begin 2 & lt;=end2)
{
if(begin 1 & lt;=end1)
{
temp[k++]= array[begin 1++];
}
if(begin 2 & lt;=end2)
{
temp[k++]= array[begin 2++];
}
}
for(I = 0;我& lt=(r-p);i++)
array[p+I]= temp[I];
免費(臨時);
}