鱼C论坛

 找回密码
 立即注册
查看: 2638|回复: 3

[已解决]冒泡法求助

[复制链接]
发表于 2021-10-20 20:48:02 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
int main()
{
        int i,j,t;
        int a[6] = {65,75,98,84,56,32};
        for(i = 0;i<6;i++)
        {
                printf("原始数据:%d\n",a[i]);
        }
        for(i = 0;i<5;i++)
        {
                for(j = 0;j<5-i;j++)
                {
                        if(a[i]<a[i+1]);
                        {   
                            t = a[i];
                                a[i] = a[i+1];
                                a[i+1] = t;
                        }
                }
        }
        for(i = 0;i<6;i++)
        {
                printf("%d\n",a[i]);
        }
}
代码如上
请大佬帮我看一下是代码有问题,还是冒泡法无法排序两位数以上的数字(这个代码可以给一位数正常排序),每次排序两位数以上的数字时都无法正常排序,求大佬帮帮萌新
最佳答案
2021-10-20 22:32:58
本帖最后由 英俊男孩建坤 于 2021-10-20 22:36 编辑
#include <stdio.h>
int main()
{
    int a[6] = {65,75,98,84,56,32};

    for(int i = 0; i < 6; i++)
    {
        printf("原始数据:%d\n",a[i]);
    }

    for(int i = 1; i < 6; i++)
    {
        for(int j = 0; j < 6 - i ; j++)
        {
            if(a[j + 1] < a[j])
            {   
                int t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }


    for(int i = 0; i < 6; i++)
    {
        printf("%d\n",a[i]);
    }
}


原始数据:65
原始数据:75
原始数据:98
原始数据:84
原始数据:56
原始数据:32
32
56
65
75
84
98


你这代码问题一堆。。。  还有 写代码的时候可以加入点空格  美观一点   都挤在一起看起来很难受
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-20 21:05:45 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-10-20 21:07 编辑
#include <stdio.h>
#include <stdbool.h>

int main()
{
    int arr[10] = {13, 7, 89, 5, -6, -15, 0, 23, -4, 17}; // 无序列表
    bool flag; // 立标
    
    while(1){
        flag = false; // 初始化标识
        for(int i = 0; i < 9; i++)
        {
            if(arr[i] > arr[i+1]) //泡沫排序法
            {
                arr[i] ^= arr[i+1];
                arr[i+1] ^= arr[i];
                arr[i] ^= arr[i+1];
                flag = true; // 当有执行排序举动,则 true
            }
        }
        if(!flag) break; // false 表示访问一轮没有执行排序,则表示排序完成
    }
    
    for(int i = 0; i < 10; i++){
        printf("%d ", arr[i]);
    }
    return 0;
}
-15 -6 -4 0 5 7 13 17 23 89
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-20 22:32:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 英俊男孩建坤 于 2021-10-20 22:36 编辑
#include <stdio.h>
int main()
{
    int a[6] = {65,75,98,84,56,32};

    for(int i = 0; i < 6; i++)
    {
        printf("原始数据:%d\n",a[i]);
    }

    for(int i = 1; i < 6; i++)
    {
        for(int j = 0; j < 6 - i ; j++)
        {
            if(a[j + 1] < a[j])
            {   
                int t = a[j];
                a[j] = a[j + 1];
                a[j + 1] = t;
            }
        }
    }


    for(int i = 0; i < 6; i++)
    {
        printf("%d\n",a[i]);
    }
}


原始数据:65
原始数据:75
原始数据:98
原始数据:84
原始数据:56
原始数据:32
32
56
65
75
84
98


你这代码问题一堆。。。  还有 写代码的时候可以加入点空格  美观一点   都挤在一起看起来很难受
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-25 17:00:36 From FishC Mobile | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-1 22:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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