紫苑天星 发表于 2021-10-20 20:48:02

冒泡法求助

#include <stdio.h>
int main()
{
        int i,j,t;
        int a = {65,75,98,84,56,32};
        for(i = 0;i<6;i++)
        {
                printf("原始数据:%d\n",a);
        }
        for(i = 0;i<5;i++)
        {
                for(j = 0;j<5-i;j++)
                {
                        if(a<a);
                        {   
                          t = a;
                                a = a;
                                a = t;
                        }
                }
        }
        for(i = 0;i<6;i++)
        {
                printf("%d\n",a);
        }
}
代码如上
请大佬帮我看一下是代码有问题,还是冒泡法无法排序两位数以上的数字(这个代码可以给一位数正常排序),每次排序两位数以上的数字时都无法正常排序,求大佬帮帮萌新

傻眼貓咪 发表于 2021-10-20 21:05:45

本帖最后由 傻眼貓咪 于 2021-10-20 21:07 编辑

#include <stdio.h>
#include <stdbool.h>

int main()
{
    int arr = {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 > arr) //泡沫排序法
            {
                arr ^= arr;
                arr ^= arr;
                arr ^= arr;
                flag = true; // 当有执行排序举动,则 true
            }
      }
      if(!flag) break; // false 表示访问一轮没有执行排序,则表示排序完成
    }
   
    for(int i = 0; i < 10; i++){
      printf("%d ", arr);
    }
    return 0;
}-15 -6 -4 0 5 7 13 17 23 89

英俊男孩建坤 发表于 2021-10-20 22:32:58

本帖最后由 英俊男孩建坤 于 2021-10-20 22:36 编辑

#include <stdio.h>
int main()
{
    int a = {65,75,98,84,56,32};

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

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


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



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


你这代码问题一堆。。。还有 写代码的时候可以加入点空格美观一点   都挤在一起看起来很难受

紫苑天星 发表于 2021-10-25 17:00:36

谢谢
页: [1]
查看完整版本: 冒泡法求助