鱼C论坛

 找回密码
 立即注册
查看: 979|回复: 7

[已解决]编写函数实现冒泡法对实型数组从小到大排序。

[复制链接]
发表于 2023-12-25 12:49:26 | 显示全部楼层 |阅读模式
10鱼币
编写函数实现冒泡法对实型数组从小到大排序。在主函数中首先输入一个整数N(1<N<=100),然后再输入N个实数存入数组中,调用你编写的函数排序后输出数组所有元素。

输入样例:
5
2  3.5  1.0  0.618  1.142
输出样例:
0.6180 1.0000 1.1420 2.0000 3.5000
这是我的代码
#include<stdio.h>

int main()
{
    int N;
    scanf("%d",&N);
    double a[N];
    int n,i,j,k,t;
  
    for(i=0;i<N;i++)          //遍历输入
        scanf("%lf",&a[i]);
    
    for(k=1;k<=N-1;k++)              //外层循环表示共n-1趟排序 
        {
            for(i=0;i<N-k;i++)           //内层循环进行第k趟排序 
            if(a[i]>a[i+1])
            {         //比较交换 
                t=a[i];
                a[i]=a[i+1];
                a[i+1]=t;
            }
        }
    for(i=0;i<N;i++)
    {          //遍历输出 
        if(i>0) 
        printf(" ");
        printf("%.4lf",a[i]);
    }
    //排序完成
    
    return 0;
}
问题就是有两组数据,如下
第一组测试输入:
5
2  3.5  1.0  0.618  1.142
—— 预期输出 ——
0.6180 1.0000 1.1420 2.0000 3.5000
—— 实际输出 ——
0.6180 1.0000 1.1420 2.0000 3.0000
第二组测试输入:
5
1.23 2.13 .3.12 2.31 1.32
—— 预期输出 ——
0.1200 0.3000 1.2300 2.1300 2.3100

—— 实际输出 ——
0.0000 0.0000 1.0000 2.0000 2.3100
请问怎么解决啊
最佳答案
2023-12-25 12:49:27
#include <stdio.h>

int main(){
    int n;
    int i,j;
    double temp;

    printf("请输入一个整数:");
    scanf("%d",&n);

    double array[n];

    for (i = 0; i < n; i++){
        scanf("%lf",&array[i]);
    }

    for (i = 0; i < n-1; i++){
        for (j = 0; j < n-i-1; j++){    //  此处 j < n-i-1
            if (array[j] > array[j+1]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }

    for (i = 0; i < n; i++){
        printf("%.4lf ",array[i]);
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 12:49:27 | 显示全部楼层    本楼为最佳答案   
#include <stdio.h>

int main(){
    int n;
    int i,j;
    double temp;

    printf("请输入一个整数:");
    scanf("%d",&n);

    double array[n];

    for (i = 0; i < n; i++){
        scanf("%lf",&array[i]);
    }

    for (i = 0; i < n-1; i++){
        for (j = 0; j < n-i-1; j++){    //  此处 j < n-i-1
            if (array[j] > array[j+1]){
                temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }

    for (i = 0; i < n; i++){
        printf("%.4lf ",array[i]);
    }

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 12:49:41 | 显示全部楼层
好的,下面是实现冒泡排序的代码:
def bubble_sort(arr):    n = len(arr)    for i in range(n - 1):        for j in range(n - i - 1):            if arr[j] > arr[j + 1]:                arr[j], arr[j + 1] = arr[j + 1], arr[j]# 在主函数中使用该函数进行排序if __name__ == '__main__':    N = int(input("请输入数组的长度:"))    arr = []    for i in range(N):        num = float(input("请输入第{}个元素的值:".format(i + 1)))        arr.append(num)    print("排序前的数组:", arr)    bubble_sort(arr)    print("排序后的数组:", arr)
以上代码中,我们定义了一个`bubble_sort`函数,对传入的数组进行冒泡排序。然后在主函数中,首先输入一个整数N表示数组的长度,然后循环输入N个数组元素的值。最后调用`bubble_sort`函数对数组进行排序,并打印出排序前后的数组。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-25 12:50:54 | 显示全部楼层
FishC 发表于 2023-12-25 12:49
好的,下面是实现冒泡排序的代码:

gun
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 12:51:00 | 显示全部楼层

很抱歉,似乎您的输入有误。"gun"是什么意思?请问有什么问题我可以帮助您解答吗?

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 15:43:52 | 显示全部楼层
问题出在变量 t,你定义的是 int,但数组 a 是 double。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-12-25 16:00:21 | 显示全部楼层
小甲鱼的二师兄 发表于 2023-12-25 15:43
问题出在变量 t,你定义的是 int,但数组 a 是 double。

第二组测试数组,第三个数前面多了一个点,怎么解决吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-25 16:35:44 | 显示全部楼层
王小二° 发表于 2023-12-25 16:00
第二组测试数组,第三个数前面多了一个点,怎么解决吗

那个点一看就是录入的时候不小心多敲的呀,哪有 .3.12 这样的数?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 00:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表