您的位置:首页 > 其它

归并排序

2015-09-20 10:48 232 查看
原文链接:/article/1389269.html

void MergeArray(int *a,int first,int mid,int last,int temp){
int i = first,j = mid + a;
int m = mid,n = last;

while(i <= m && j <= n){
if(a[i] < a[j])
temp[k++] = a[i++];
else
temp[k++] = a[j++];
}
while(i <= m)
temp[k++] = a[i++];
while(j <= n)
temp[k++] = a[j++];

for(i = 0;i < k;i++)
a[first + i] = temp[i];
}
void MergeSortStep(int *a,int first,int last,int *temp){
if(first < last){
int mid = (first + last) / 2;
MergeSortStep(a,first,mid - 1,temp);
MergeSortStep(a,mid + 1,last,temp);
MergeArray(a,first,mid,last,temp);
}
}

bool MergeSort(int *a,int n){
int *p = new int
;

if(p == NULL)
return false;

MergeSortStep(a,0,n - 1,p);
return true;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: