回 帖 发 新 帖 刷新版面

主题:一个合并排序的算法用STL写的,不知道错在哪里??

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void mergesort(vector<int>& v1,int left,int right);
vector<int> vec(4);
vector<int>vec1(4);

int main()
{
  vec[0]=1;vec[1]=7;vec[2]=4;vec[3]=5;
  mergesort(vec,0,3);
    for(int i=0;i<4;i++)
    cout<<vec[i];

    system("pause");
    return 0;
}



void mergesort(vector<int>& v1,int left,int right)
{
     if(left<right){
       int i=(left+right)/2;
    
       mergesort(v1,left,i);
       mergesort(v1,i+1,right);
       merge(v1.begin()+left,v1.begin()+i+1,v1.begin+i+1,
        v1.begin+right+1,vec1.begin());
       copy(vec1.begin(),vec1.end(),v1.begin());
       }
}

回复列表 (共3个回复)

沙发

merge(v1.begin()+left,v1.begin()+i+1,v1.begin+i+1,
        v1.begin+right+1,vec1.begin());


请问这个函数在哪里?

板凳

<algorithm>里面啊,

3 楼


 vector<int>::iterator it_begin1=v1.begin()+left;
       vector<int>::iterator it_end1=v1.begin()+i+1;
       vector<int>::iterator it_begin2=v1.begin()+i+1;
       vector<int>::iterator it_end2=v1.begin()+right+1;
         merge(it_begin1,it_end1,it_begin2,
        it_end2,vec1.begin());
请用迭代器
不过这个合并排序算法本身还有问题。

我来回复

您尚未登录,请登录后再回复。点此登录或注册