2016-10-08 3 views
2

(アルゴリズム入門(CLRS))からマージソートアルゴリズムを実装しようとしています。 Cのベクトル++が、ベクトルはどこ私はrefference
て電話を使用しようとしています 、間違っているつもりです、 は助けてください、ソートされていない 入力は、新しい行の整数を含むテキストファイルからあるC++のベクタを使用して(アルゴリズムの紹介(CLRS)から)マージソートアルゴリズムを実装しようとしていますが、配列がソートされていません。

#include <iostream> 
#include <fstream> 
#include <vector> 
#include <limits> 

using namespace std; 

void merge(vector<long>& A, long high, long mid, long low) 
{ 
    long n1,n2; 
    n1 = mid -low +1; 
    n2 = high - mid; 

vector<long> L; //auxilarry array 
vector<long> R; //auxilarry array 

for(int i = low; i <= mid;i++) 
{ 
    L.push_back(A[i]); 
} 

for(int i = mid+1; i <= high;i++) 
{ 
    R.push_back(A[i]); 
} 

L.push_back(numeric_limits<int>::max()); 
R.push_back(numeric_limits<int>::max()); 

int i = 0, j = 0; 

for(int k = low; k <= high; k++) 
{ 
    if(L[i]<=R[j]) 
    { 
     A[k] = L[i]; 
     i++; 
    } 
    else 
    { 
     A[k] = R[j]; 
     j++; 
    } 
} 

} 
void mergeSort(vector<long>& A, long low, long high) 
{ 
long mid; 

if(low < high) 
{ 
    mid = (high+low)/2 ; 

    mergeSort(A,low,mid); 
    mergeSort(A, mid+1,high); 
    merge(A,low, mid,high); 
} 
} 

int main() 
{ 
ifstream fin("Array.txt"); 

vector<long> array; 

for(long i;fin>>i;) 
{ 
    array.push_back(i); 
} 
cout<<array.size(); 
mergeSort(array,0,array.size()); 

for(long i=0;i<array.size();i++) 
{ 
    cout<<array[i]<<endl; 
} 

return 0; 
} 

答えて

3

マージ関数は次のように宣言されています。

void merge(vector<long>& A, long high, long mid, long low) 

とuはmergesortの中でmergeを呼び出しています。

void merge(array, low, mid, high) 

引数の順序が間違っています。 lowおよびhigh可変注文

関連する問題