69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
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));
begin1= p;
end1 = q;
begin2 = q + 1;
end2 = r;
k = 0;
while((begin1 <= end1)&&( begin2 <= end2))
{
if(array[begin1] < array[begin2])
{
temp[k] = array[begin1];
begin1++;
}
else
{
temp[k] = array[begin2];
begin2++;
}
k++;
}
while(begin1<=end1)
{
temp[k++] = array[begin1++];
}
while(begin2<=end2)
{
temp[k++] = array[begin2++];
}
for (i = 0; i <= (r - p); i++)
array[p+i] = temp[i];
free(temp);
}
void MergeSort(int array[], int first, int last)
{
int mid = 0;
if(first < last)
{
mid = (first + last) / 2;
MergeSort(array, first, mid);
MergeSort(array, mid + 1,last);
Merge(array, first, mid, last);
}
}
void main()
{
int data[] = {10 , 6, 9, 3, 8, 2, 5,7, 1, 4};
int i;
MergeSort(data, 0, 9);
for (i = 0; i < 10; i++)
{
printf("%d ", data[i]);
}
}
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.
p.c
Microsoft (R) Incremental Linker Version 6.00.8168
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.
/out:p.exe
p.obj
H:\pro>p
1 2 3 4 5 6 7 8 9 10
H:\pro>