1004054692 发表于 2020-10-17 20:15:55

冒泡排序问题

#include <stdio.h>

void main()
{
        int a;
        int i,j,t;
        printf("input 10 numbers:\n");
        for(i=0;i<10;i++)
        {
                scanf("%d",&a);
        }
        printf("\n");

        for(j=0;j<9;j++)
        {
                for(i=0;i<9-j;i++);
                {
                        if(a>a)
                        {
                                t = a;
                                a = a;
                                a = t;
                        }
                }
        }
        for(i=0;i<10;i++)
        {
                printf(" %d",a);
        }
        printf("\n");
}



编译正确 但是达成不了功能。求救大佬

巴巴鲁 发表于 2020-10-17 20:33:38

a和a去比
for(j=0;j<9;j++)
      {
                for(i=0;i<9-j;i++);
                {
                        if(a>a)
                        {
                              t = a;
                              a = a;
                              a = t;
                        }
                }
      }

1004054692 发表于 2020-10-17 20:58:22

巴巴鲁 发表于 2020-10-17 20:33
a和a去比
for(j=0;j

#include<stdio.h>
int main()
{
int i,j,t,a;
for(i=0;i<10;i++)
scanf("%d",&a);
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a>a)
{t=a;a=a;a=t;}
for(i=0;i<10;i++)
printf("%d\n",a);
return 0;
}
那大佬 这段程序我觉得和我上面的程序一样但是能实现排序功能这是为什么

巴巴鲁 发表于 2020-10-17 21:15:58

1004054692 发表于 2020-10-17 20:58
#include
int main()
{


你可能还没有理解冒泡排序的实现
每次拿第一个元素与后面的元素依次比较,小(或大)互换位置
参考一下甲鱼哥做的图

川建军 发表于 2020-10-17 22:58:17

// C语言版本的冒泡排序

int bubblesort(int arr[], int len)
{
      for(int i=0; i<len; i++)
      {
                for(int j=0; j<len-i-1; j++)
                {
                        if(arr > arr)
                              //swap(arr, arr);
                              int temp = arr;
                              arr = arr;
                              arr = temp;
                }
      }
}

int main(void)
{
      int arr[] = {1, -2 ,4 , 9, -8};
      bubblesort(arr, sizeof(arr)/sizeof(arr));
      return 0;
}

乐乐学编程 发表于 2020-10-18 08:05:06

川建军 发表于 2020-10-17 22:58
// C语言版本的冒泡排序

int bubblesort(int arr[], int len)


你这个程序能排序?我运行后直接 Press any key to continue...

风过无痕1989 发表于 2020-10-18 08:57:23

你的程序没有大问题,有一个错误,见我的程序注释


#include <stdio.h>

void main()
{
    int a = {0};
    int i,j,t;
    printf("input 10 numbers:\n");
    for(i=0;i<10;i++)
    {
      scanf("%d",&a);
    }
    printf("\n");

    for(j=0;j<10;j++)
    {
      for(i=0;i<9;i++)// 程序错误在此,不能有分号!
        {
            if(a<a)
          {
                t = a;
                a = a;
                a = t;
          }
        }
    }
    for(i=0;i<10;i++)
    {
      printf(" %d",a);
    }
    printf("\n");
}

风过无痕1989 发表于 2020-10-18 08:59:29

巴巴鲁 发表于 2020-10-17 20:33
a和a去比
for(j=0;j

你被他误导了,for 语句也用了分号

川建军 发表于 2020-10-18 11:49:39

乐乐学编程 发表于 2020-10-18 08:05
你这个程序能排序?我运行后直接 Press any key to continue...

i->len减1 对不起对不起

巴巴鲁 发表于 2020-10-18 11:50:45

风过无痕1989 发表于 2020-10-18 08:59
你被他误导了,for 语句也用了分号

哎,没看到{:10_250:}

乐乐学编程 发表于 2020-10-18 22:16:16

川建军 发表于 2020-10-18 11:49
i->len减1 对不起对不起

不用说对不起,我也是来学习的

风过无痕1989 发表于 2020-10-19 19:42:39

弄明白了吗?若是没弄明白,请将问题提出来,若是弄明白了,给个最佳答案哟~~

乐乐学编程 发表于 2020-10-19 23:50:16

还没弄明白,我帮你顶

风过无痕1989 发表于 2020-10-21 14:03:47

现在清楚问题出在哪啦吗?

资治通鉴 发表于 2020-10-21 21:35:15

#include <iostream>
using namespace std;

void bubblesort(doble arr[], int len)
{
      for(int i=0; i<len; i++)
      {
                for(int j=0; j<len-i-1; j++)
                {
                        if(arr > arr)
                        {
                              temp = arr;
                              arr = arr;
                              arr = temp;
                        }
                }
}
页: [1]
查看完整版本: 冒泡排序问题