C++ 部分合并排序
对于输入6,2,9,1,5,8,我得到1,2,6,9,5,8 请帮助我获得1,2,5,6,8,9,因为输出也指出了错误。提前感谢C++ 部分合并排序,c++,algorithm,sorting,C++,Algorithm,Sorting,对于输入6,2,9,1,5,8,我得到1,2,6,9,5,8 请帮助我获得1,2,5,6,8,9,因为输出也指出了错误。提前感谢 #include<iostream> using namespace std; void merge(int a[],int l[],int lc,int r[],int rc){ int i,j,k; i=0;j=0;k=0; while(i<lc && j<rc){ if(l[i]<r[j
#include<iostream>
using namespace std;
void merge(int a[],int l[],int lc,int r[],int rc){
int i,j,k;
i=0;j=0;k=0;
while(i<lc && j<rc){
if(l[i]<r[j]){
a[k++]=l[i++];
}
else{
a[k++]=r[j++];
}
while(i<lc){
a[k++]=l[i++];
}
while(j<rc){
a[k++]=r[j++];
}
}
}
void mergesort(int a[],int n){
int mid;
if (n<2){
return;
}
mid=n/2;
int l[mid],r[n-mid];
for(int i=0;i<mid;i++){
l[i]=a[i];
}
for(int i=mid;i<n;i++){
r[i-mid]=a[i];
}
mergesort(l,mid);
mergesort(r,n-mid);
merge(a,l,mid,r,n-mid);
}
int main(){
int a[]={6,2,9,1,5,8};
int n=6;
mergesort(a,n);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
}
#包括
使用名称空间std;
无效合并(int a[],int l[],int lc,int r[],int rc){
int i,j,k;
i=0;j=0;k=0;
而(i你的问题是这些循环
while(i<lc){
a[k++]=l[i++];
}
while(j<rc){
a[k++]=r[j++];
}
您采取了哪些调试步骤?至少,输入print语句来跟踪例程的执行和值。我建议您在线搜索“如何调试程序”。您将获得大量有用的点击。
void merge(int a[],int l[],int lc,int r[],int rc)
{
int i,j,k;
i=0;
j=0;
k=0;
while(i<lc && j<rc)
{
if(l[i]<r[j])
{
a[k++]=l[i++];
}
else
{
a[k++]=r[j++];
}
}
while(i<lc)
{
a[k++]=l[i++];
}
while(j<rc)
{
a[k++]=r[j++];
}
}