我输入的任何值的输出都错误,例如,如果我输入了5,4,3,2,1,则输出为1,1,1,1,1 ...我在其中使用了冒泡排序算法函数bubbleort ...并将数组A传递给函数,但输出仅包含我输入的最后一个值。

#include <stdio.h>
#define SIZE 5
void bubblesort(int A[]);
int main(void)
{
  int A[SIZE]={0};
  int i;
  puts("Enter value to store it in integer");
  for(i=0;i<SIZE;i++)
  {
    scanf("%d",&A[i]);
  }
  puts("");
  bubblesort(A);
}

void bubblesort(int A[])
{
  int i,j;
  for(i=0;i<SIZE;i++)
  {
    for(j=0;j<4;j++)
    {
      if(A[j]>A[j+1])
      {
        int temp;
        temp=A[j+1];
        A[j]=A[j+1];
        A[j]=temp;
      }
    }
  }
  for(i=0;i<SIZE;i++)
  {
    printf("%d ",A[i]);
  }
}

===============>>#1 票数:1

我认为您已经接近,但我怀疑您的问题在这里:

int temp;
temp=A[j+1];
A[j]=A[j+1];
A[j]=temp;

我相信您想设置temp=A[j]以便以后可以设置A[j+1] = temp或类似的东西。

===============>>#2 票数:1 已采纳

一个逻辑错误:

交换

         temp=A[j+1];  // stores A[j+1] in temp
         A[j]=A[j+1];  // stores A[j+1] in A[j] - the value in A[j] is lost
         A[j]=temp;    // stores temp in A[j]

正确的方法是:

         temp=A[j+1];   // stores A[j+1] in temp
         A[j+1]=A[j];   // stores A[j] in A[j+1] 
         A[j]=temp;     // stores temp in A[j]

两个建议:

移动这个: int temp; 退出for loop

更改此:

for(j=0;j<4;j++)

至:

for(j=0;j<i;j++)

===============>>#3 票数:1

使用此代码进行冒泡排序

   #include <stdio.h>

int main()
{
  int array[100], n, c, d, swap;

  printf("Enter Total Terms\n");
  scanf("%d", &n);

  printf("Enter %d Elements\n", n);

  for (c = 0; c < n; c++)
    scanf("%d", &array[c]);
//bubble sort logic 
  for (c = 0 ; c < ( n - 1 ); c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (array[d] > array[d+1]) /*  use < For decreasing order */
      {
        swap       = array[d];
        array[d]   = array[d+1];
        array[d+1] = swap;
      }
    }
  }

  printf("ascending order:\n");

  for ( c = 0 ; c < n ; c++ )
     printf("%d\n", array[c]);

  return 0;
}

  ask by ibadia translate from so

未解决问题?本站智能推荐:

1回复

我在此C程序中遇到两个错误。 处理结构,数组和气泡排序

前两个错误: 第129行和第131行是我编写的冒泡排序功能的一部分,该功能旨在对称为“股票”的结构的数组进行排序。 这是股票结构的代码: 这是我为排序编写的代码: 是的,我尝试在每行中的等号后立即用(Stock)强制转换每个作业,但这没用。 感谢任何帮助的人!
2回复

气泡排序使数组为空

我正在尝试使用C对字符数组进行排序。我的冒泡排序算法是一种标准的算法,但是当我尝试使用sort方法打印数组后,它们似乎为空。 这是我的指针使用问题吗?
1回复

为什么每次迭代都不能正确打印气泡排序?

我尝试的算法无法正确地对代码进行排序,并返回0。 我尝试将代码外包给一个函数,以使其更加清晰,但是我无法弄清楚。 输出一直有效,直到用户完成输入为止,然后它给了我从1到5的迭代,并输出0而不是打印排序的数组。 目标是一次用冒泡方法对数组进行排序并打印每一步,我还希望在对算法进行排
1回复

如何使用气泡排序或选择排序以降序对指针数组中的数组进行排序?

我正在研究一个项目,它以几种不同的方式对指针数组中的数组进行排序,但我仍然坚持使用一种排序方式。 阵列的构建方式是第一个数字表示后面的数字量。 例如,(3,0,23,1):此数组在第一个索引后有3个数字)。 我想从最低到最高的数字对数组进行排序, 但我不想更改第一个索引,这意味着数组看起来
1回复

按升序排序时,气泡排序不起作用

我创建了一个程序,该程序从用户那里获取大约5位数字的输入(使用了char数据类型),并且它根据if语句中设置的参数,根据升序或降序对气泡进行排序。 情况1:如果(a [j] <a [j + 1]) 输入:12345 期望的输出:54321 输出:12345-工程 情况2:如果
4回复

排序功能无法正常工作(气泡排序)-c

我的排序功能遇到了一些麻烦,该功能也使用交换功能工作。 我一直试图找到我的错误,但找不到它。 其余代码工作完美,只有sort函数不起作用(它不对任何东西进行排序。) 如果有人对如何解决我的问题有任何想法,我将在此处保留代码。
1回复

C冒泡排序整数数组-输出问题

新手在这里。 对于我的C编程类,需要使用冒泡排序对从输入.txt文件读取的列表进行排序。 .txt文件上的每一行都有年份,名称和受飓风[year] [name] [states]影响的州。 例如: 该程序需要按年份对列表进行排序,同时保持所有数据行正确(将相对数组元素保持在
1回复

C中的冒泡排序数组错误:第二个整数始终为零

我编写了一个程序来对长度不超过20个整数的数组进行冒泡排序,其内容由用户决定。 我遇到的问题是,当打印排序后的数组时,数组中的第二个整数始终为0,从而导致无法打印排序后的数组中的最大整数。 这是我的代码如下:
1回复

该程序读取一个文本文件作为输入并生成一个输出文件,该文件的所有原始行均按字母顺序排列

下面的代码可以完美地满足我们的需求,但是在本周晚些时候,我们被告知无法使用strcmp,因为我们尚未对其进行介绍。 你们对我可以使用什么有任何建议。 我是指针的新手,因此获得了原始代码的帮助。 谢谢 好的,这是我的新代码。 它不是对文本进行排序。 我是新来的,所以放轻松
1回复

气泡分选外壳,无输出

我在尝试在shell中使用冒泡排序时遇到问题,由于我假设排序正确,因此我不确定自己的问题出在哪里。 我没有收到错误,但根本没有对数字进行排序。