C语言初学者r 2023-03-12 16:27 采纳率: 91.7%
浏览 21
已结题

调用冒泡排序函数时实现升序排序

编写函数调用函数来实现变量值大小互换遇到问题,目前学到函数还未学指针,如何调用函数实现互换。

img

#include<stdio.h>
void mpsort(int a[],int n)   //冒泡排序 
{
    int i,j,t;
    for(i=0;i<n-1;i++)
    {
        for(j=0;j<(n-i);j++)
        {
            if(a[n+1]<a[n])  //从小到大排序 
            {
                t=a[i+1];      
                a[i+1]=a[i];  //待修改 
                a[i]=t;
            }
            
        }
    }
}
void initArray(int a[],int n)//输入函数 
{
    int i;
    for(i=0;i<n;i++)
     {
       printf("a[i]=");
       scanf("%d",&a[i]);
     }
}
void outputArray(int a[],int n)//输出数组 
{
        int i;
        for(i=0;i<n;i++)
        {
            printf("%3d",a[i]);
        }
}
int main() 
{
    int array[100];
    int m;
    printf("请输入数组长度: "); 
    scanf("%d",&m);
    initArray(array,m);
    mpsort(array,m);
    outputArray(array,m);
    return 0;
}

  • 写回答

4条回答 默认 最新

  • MarkHan_ 2023-03-12 16:55
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    如果您想在不使用指针的情况下,实现冒泡排序中的变量值大小互换,可以使用一个临时变量来完成。在您的代码中,临时变量已经定义为t,但是在比较和互换两个元素的时候,您需要注意数组下标的范围和变量的使用。

    以下是修改过的mpsort函数,其中使用了临时变量t,并且在比较和互换两个元素的时候,使用正确的数组下标和变量:

    void mpsort(int a[], int n)   //冒泡排序 
    {
        int i, j, t;
        for (i = 0; i < n - 1; i++)
        {
            for (j = 0; j < n - i - 1; j++) //注意这里的循环范围
            {
                if (a[j + 1] < a[j])  //从小到大排序 
                {
                    t = a[j + 1];
                    a[j + 1] = a[j];
                    a[j] = t;
                }
            }
        }
    }
    
    
    

    请注意,上述代码中if语句的判断条件为a[j+1]<a[j],而不是您之前的if(a[n+1]<a[n]),因为您在循环中使用的是i和j两个变量来遍历数组,而不是n和n+1。另外,在第二个for循环中,内层循环应该是j<n-i-1,而不是j<(n-i),因为冒泡排序每次都会将最大的元素沉到数组的最后面,因此在下一轮循环中,就可以忽略已经排好序的最后几个元素。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 已采纳回答 3月12日
  • 创建了问题 3月12日

悬赏问题

  • ¥100 需要跳转番茄畅听app的adb命令
  • ¥50 寻找一位有逆向游戏盾sdk 应用程序经验的技术
  • ¥15 请问有用MZmine处理 “Waters SYNAPT G2-Si QTOF质谱仪在MSE模式下采集的非靶向数据” 的分析教程吗
  • ¥50 opencv4nodejs 如何安装
  • ¥15 adb push异常 adb: error: 1409-byte write failed: Invalid argument
  • ¥15 nginx反向代理获取ip,java获取真实ip
  • ¥15 eda:门禁系统设计
  • ¥50 如何使用js去调用vscode-js-debugger的方法去调试网页
  • ¥15 376.1电表主站通信协议下发指令全被否认问题
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证