に2つのソートされたリストをマージします。は、C++、私がソートされた形で一緒にこの2つのリストをマージしようとしていますどのように私はこのコードが動作するように得るか、
例:
LIST = 3,8,16,28,50,17,19,30,73,80
場合3,8,16,28,50右側 と17,19,30,73,80左側 は同じリストに含まれているが、2つの異なるリストとして近づきました。
これは私のコードです:
int main()
{
int first,last,m,temp, counter = 0,lsize = 11;
int a[lsize] = {3,8,16,28,50,17,19,30,73,80};
for(int i = 0 ; i < lsize; i++)
cout<<a[i]<<" ,";
cout<<"\n";
first = 0;
last = lsize;
m = (first + last)/2;
int i = 0;
while(counter < lsize){
if(a[first] < a[m+1] && m+1 < last){
counter++;first++;
}
else if(a[m+1] < a[first] && first <= m){
temp = a[m+1];
shift(a,first,m+1);
a[counter]=temp;
counter++;first++;m++;
}
else if(m+1 > last && first <= m){
a[counter]=a[first];
first++;counter++;
}
else if(first > m && m+1 <= last){
a[counter]=a[m+1];
m++;counter++;
}
}
for(int i = 0 ; i < lsize; i++)
cout<<a[i]<<" ,";
cout<<"\n";
return 0;
}
私は出力
3,8,16,17,19,28,30,50,65,73,73
としてこれを取得しておきますホープ誰かが私にはそれが間違って おかげ
あなたは 'のstd :: inplace_merge'を見たことがありますか? – Jarod42
あなたの出力にはどのように65がありますか?投稿したコードが出力と一致していますか? – Aenimated1