递归冒泡排序:输出错误

问题描述 投票:0回答:1

我尝试编写一个递归冒泡排序函数。但代码的最终输出与输入数组的输出相同。由于某种原因没有进行排序。请帮我解决这个问题。另外,请指出我在编码约定部分中犯的任何错误。提前致谢。 输入样本 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();
}
recursion data-structures bubble-sort
1个回答
0
投票

在交换步骤中,您将 arr[i] 的值再次分配给 arr[i],而不是分配给 arr[i-1]。

© www.soinside.com 2019 - 2024. All rights reserved.