王鹿其 发表于 2023-10-10 20:38:49

冒泡排序为什么输出不了结果

#include<iostream>
using namespace std;
int main()
{
        int arr[]={4,2,8,0,5,7,1,3,9};
        cout<<"排序前的结果"<<endl;
        for(int i=0;i<9;i++)
        {
                cout<<arr<<' ';
        }
        //总排序轮数
        for(int j=0;j<9-1;j++)
        {//内层循环对比次数=元素个数 -当前轮数-1
                for(int k=0;k<9-j-1;k++)
                {
                //如果第一个数字比第二个数字打,则交换两个数字
                        if(arr>arr)
                        {
                                int temp=arr;
                          arr=arr;
                                arr=temp;
                        }
                       
                }
               
        }
        cout<<"排序后的结果是:"<<arr<<' ';
        for(int k;k<=9;k++)
        {
                cout<<arr;
        }
       
       
       
       
       
       
        return 0;
}

isdkz 发表于 2023-10-10 20:39:18

问题出在代码第24行,输出排序后的结果时,使用了错误的方式。应该使用for循环遍历输出数组中的每个元素,而不是直接输出整个数组的地址。修改后的代码如下:

#include<iostream>
using namespace std;
int main()
{
    int arr[]={4,2,8,0,5,7,1,3,9};
    cout<<"排序前的结果"<<endl;
    for(int i=0;i<9;i++)
    {
      cout<<arr[ i]<<' ';
    }
    //总排序轮数
    for(int j=0;j<9-1;j++)
    {//内层循环对比次数=元素个数 -当前轮数-1
      for(int k=0;k<9-j-1;k++)
      {
      //如果第一个数字比第二个数字打,则交换两个数字
                if(arr>arr)
                {
                  int temp=arr;
                  arr=arr;
                  arr=temp;
                }
               
      }
      
    }
    cout<<"\n排序后的结果是:";
    for(int k=0;k<9;k++)
    {
      cout<<arr<<" ";
    }
   
    return 0;
}


修改后的代码可以正确输出冒泡排序后的结果。

Mike_python小 发表于 2023-10-10 20:40:48

冒泡排序的问题在于条件判断部分出现了错误。

请注意修改以下代码段:


if(arr>arr)
{
    int temp=arr;
    arr=arr;
    arr=temp;
}


应该将 arr 修正为 arr,即:


if(arr > arr)
{
    int temp = arr;
    arr = arr;
    arr = temp;
}


此外,输出排序后的结果时,需要使用循环逐个输出数组元素,而不是直接输出数组名。完整修改后的代码如下所示:


#include<iostream>
using namespace std;

int main()
{
    int arr[] = {4,2,8,0,5,7,1,3,9};
   
    cout << "排序前的结果:" << endl;
    for(int i = 0; i < 9; i++)
    {
      cout << arr << ' ';
    }
   
    for(int j = 0; j < 9-1; j++)
    {
      for(int k = 0; k < 9-j-1; k++)
      {
            if(arr > arr)
            {
                int temp = arr;
                arr = arr;
                arr = temp;
            }
      }
    }
   
    cout << "\n排序后的结果是:";
    for(int k = 0; k < 9; k++)
    {
      cout << arr << ' ';
    }
   
    return 0;
}


修改后的代码可以正确输出排序前和排序后的结果。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 冒泡排序为什么输出不了结果