天生我才の 2022-01-24 12:40 采纳率: 100%
浏览 19
已结题

数组实现冒泡升序与函数调用结合出现问题

问题遇到的现象和发生背景

想用一个函数实现一个数组的冒泡升序,但看不出来哪里出了问题

问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
void bubbleSort(int i, int k)
{
    int arr[] = { 9,4,8,1,7,6,5,3,2,0 };
    for (int i = 0; i < 10; i++)
    {
        for (int k = 0; k < 10 - i - 1; k++)
        {
            int temp = 0;
            if (arr[k] > arr[k + 1])
            {
                temp = arr[k];
                arr[k] = arr[k + 1];
                arr[k + 1] = temp;
            }
        }
    }
}
int main()
{
    int arr[] = { 9,4,8,1,7,6,5,3,2,0 };
    int i = 0, k = 0;
    bubbleSort(i, k);
    for (int j = 0; j < 10; j++)
    {
        cout << arr[j] << endl;
    }
    system("pause");
    return 0;
}

运行结果及报错内容

结果就是还是原来数组,并没有升序排列

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-01-24 13:05
    关注

    函数里排序的是函数里的数组,不是main里的数组,虽然数组名称一样,但是两个不同的数组。
    需要将main中的数组作为参数传递到函数

    #include<iostream>
    using namespace std;
    void bubbleSort(int *arr,int n)
    {
        for (int i = 0; i < n-1; i++)
        {
            for (int j = 0; j < n - i - 1; j++)
            {
                int temp = 0;
                if (arr[j] > arr[j + 1])
                {
                    temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
    }
    int main()
    {
        int arr[] = { 9,4,8,1,7,6,5,3,2,0 };
        bubbleSort(arr,10);
        for (int j = 0; j < 10; j++)
        {
            cout << arr[j] <<" " << endl;
        }
        system("pause");
        return 0;
    }
     
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月1日
  • 已采纳回答 1月24日
  • 创建了问题 1月24日

悬赏问题

  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像