色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

分治算法中排序的完整代碼?

老白2年前13瀏覽0評論

問題之處:

1.數組要傳遞引用,否則不會被改變。

2.代碼要加括號:

for(int k=p-1;k!=r;++k) {

if(L[i]<=R[j]){

A[k]=L[i];

++i;

}

else if(L[i]>R[j]){

A[k]=R[j];

++j;

}

}

-------------------

完整代碼:

#include<iostream>

#include<vector>

#include<cstdlib>

using namespace std;

void MERGE(vector<int> &A,int p,int q,int r)

{

int i,j,k=0;

int n1=q-p+1;

int n2=r-q;

vector<int> L((n1+1),0),R((n2+1),0);

for(vector<int>::size_type i=0;i!=n1;++i)

L[i]=A[p+i-1];

for(vector<int>::size_type j=0;j!=n2;++j)

R[j]=A[q+j];

L[n1]=88888;

R[n2]=88888;

i=0;

j=0;

for(int k=p-1;k!=r;++k) {

if(L[i]<=R[j]){

A[k]=L[i];

++i;

}

else if(L[i]>R[j]){

A[k]=R[j];

++j;

}

}

}

void MERGE_SORT(vector<int> &A,int p,int r)

{

int q;

if(p<r){

if((r-p+1) % 2==0)q=(r+p+1)/2-1;

if((r-p+1) % 2==1)q=(r+p)/2;

MERGE_SORT(A,p,q);

MERGE_SORT(A,q+1,r);

MERGE(A,p,q,r);

}

}

int main()

{

int val;

vector<int> A;

//while(cin>>val)

// A.push_back(val);

A.push_back(9);

A.push_back(8);

A.push_back(2);

A.push_back(4);

A.push_back(3);

MERGE_SORT(A,1,A.size());

for(vector<int>::iterator ix=A.begin();ix!=A.end();++ix)

cout<<*ix<<' ';

system("pause");

return 0;

}