1. 程式人生 > >用遞歸實現歸並排序(不會呀 不知道哪裏錯了)

用遞歸實現歸並排序(不會呀 不知道哪裏錯了)

clas iostream ges sin ace logs div void 遞歸實現

#include<iostream>
using namespace std;
#include<vector>
#include "Vector.h"

void merge(int  num[], int tem[], int lo, int hi);
//歸並排序
void mergesort(int num[],int tem[], int lo, int hi)
{
    //int *tem01;
    if (hi - lo == 0 )  tem[lo] = num[lo];
    
    else {
        int mid = (lo + hi) >> 1
; mergesort(num, tem,lo, mid); mergesort(num, tem, mid+1, hi); merge(num, tem, lo, hi);//tem01是兩個變量的中轉站 } } void merge(int num[], int tem[], int lo, int hi) { int mid = (lo + hi) >> 1; int n = mid + 1; if ((lo <= mid) && (mid + 1 <= hi || num[lo] > tem[mid + 1
])) { num[lo++] = tem[lo++]; } if ((mid + 1 <= hi) && (lo <= mid || num[lo] < tem[mid + 1])) { num[lo++] = tem[(n)++]; } } int main() { int v1[10] = {1,2,3,0,9,8,7,6,5,4}; int v2[10]; mergesort(v1,v2, 0,9); for (int i = 0; i < 10; i++) { cout
<< v2[i]<< endl; } system("pause"); }

用遞歸實現歸並排序(不會呀 不知道哪裏錯了)