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日

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?