C 合并排序单个函数
我尝试在单个函数中递归合并排序 如何修复此代码以获得正确的输出C 合并排序单个函数,c,C,我尝试在单个函数中递归合并排序 如何修复此代码以获得正确的输出 void merge(int a[], int left, int right) { if(left < right) { int mid = (left + right) / 2; merge(a, left, mid); merge(a, mid + 1, right); int b[mid - left + 1], c[right -
void merge(int a[], int left, int right)
{
if(left < right)
{
int mid = (left + right) / 2;
merge(a, left, mid);
merge(a, mid + 1, right);
int b[mid - left + 1], c[right - mid];
//two half arrays of the original array 'a'
int i, j, k;
for(i = left, j = 0; i <= mid; i++, j++)
b[j] = a[i];
for(j = mid + 1, i = 0; j <= right; j++, i++)
c[i] = a[j];
i = 0;
j = 0;
k =- 1;
while(k < (right - left + 1))
{
k++;
if(i == (mid - left + 1))
a[k] = c[j++];
else if(j == (right - mid))
a[k] = b[i++];
else if(b[i] < c[j])
a[k] = b[i++];
else
a[k] = c[j++];
}
}
}
void合并(int a[],int左,int右)
{
if(左<右)
{
int mid=(左+右)/2;
合并(a、左、中);
合并(a,中间+1,右侧);
INTB[中-左+1],c[右-中];
//原始数组“a”的两个半数组
int i,j,k;
对于(i=left,j=0;i输入是什么,输出是什么?输入是整数数组,输出是按升序排序的同一数组。对不起,我说错了,您提供的输入和排序函数返回的是什么。int b[mid left+1],c[right mid]
compile?也许可以看看这一页:。你能用正确的缩进来格式化你的输出吗。给出的代码很乱。输入是什么,输出是什么?输入是整数数组,输出是按升序排序的同一数组。对不起,我说错了,你通常提供的输入是什么,排序函数返回的是什么。int b[mid-left+1],c[right-mid];
compile?也许可以看看这一页:。你能用正确的缩进设置输出格式吗?给出的代码很乱。