小编Nic*_*ick的帖子

Mergesort,使用for循环进行合并

我试图在C中编写代码以在合并函数中mergesort使用for循环.不幸的是它不起作用.在main函数中,我按降序创建一个array10 ints,然后调用mergesort函数对它们进行排序.合并函数中显然存在错误,因为从未实现升序,并且在某些数组大小中,一些长数字被侵入.我究竟做错了什么?这是功能:

#include <stdio.h>
#include <stdlib.h>


void mergesort(int array[], int left, int right);

int main()
{
    int i;
    int arr[10];
    for(i=10;i>0;i--){
        arr[10-i]=i;
    }
    for(i=0;i<10;i++){
        printf("arr[%d] = %d\n",i,arr[i]);
        }
    mergesort(arr,0,9);
    puts("\n");
    for(i=0;i<10;i++){
        printf("arr[%d] = %d\n",i,arr[i]);
        }
    return 0;
}

void mergesort(int array[], int left, int right)
{
    void merge(int array[],int left, int mid, int right);
    int mid;
    if(left<right){
        mid=(left+right)/2;
        mergesort(array,left,mid);
        mergesort(array,mid+1,right);
        merge(array,left,mid,right);
    }
}

void merge(int array[], int left, int …
Run Code Online (Sandbox Code Playgroud)

c mergesort

0
推荐指数
1
解决办法
4695
查看次数

标签 统计

c ×1

mergesort ×1