我尝试编写一个递归冒泡排序函数。但代码的最终输出与输入数组的输出相同。由于某种原因没有进行排序。请帮我解决这个问题。另外,请指出我在编码约定部分中犯的任何错误。提前致谢。 输入样本 arr={1,4,2,5,3} 样本输出 ar={1,4,2,5,3}
#include<iostream>
using namespace std;
class Sort
{
int arr[50];
int n;
public:
Sort()
{
cout<<"Enter no of elements : ";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Element "<<i+1<<" : ";
cin>>arr[i];
}
}
bool sort(int current)
{
int t;
if(current>=n-1)
{
return true;
}
for(int i=n-1;i>current;i--)
{
if(arr[i]<arr[i-1])
{
cout<<"hi";
t=arr[i];
arr[i]=arr[i-1];
arr[i]=t;
}
}
return sort(current+1);
}
void display()
{
for(int i=0;i<n;i++)
{
cout<<arr[i]<<"\t";
}
cout<<endl;
}
};
int main()
{
Sort s;
s.sort(0);
s.display();
}
在交换步骤中,您将 arr[i] 的值再次分配给 arr[i],而不是分配给 arr[i-1]。