在冒泡排序中输出错误的输出

时间:2015-05-16 17:31:48

标签: c arrays function sorting bubble-sort

我输入的任何值都输入错误,例如,如果我输入了5,4,3,2,1输出为1,1,1,1,1 ......我使用了气泡函数bubblesort中的排序算法...并将数组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]);
  }
}

3 个答案:

答案 0 :(得分:1)

我认为你很接近,但我怀疑你的问题在这里:

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

我相信您要设置temp=A[j],以便稍后可以设置A[j+1] = temp或其他内容。

答案 1 :(得分:1)

一个逻辑错误:

交换来实现

         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++)

为:

static main(args) {

  // http://mrhaki.blogspot.com/2009/09/groovy-goodness-parsing-commandline.html
  // http://docs.groovy-lang.org/latest/html/gapi/groovy/util/CliBuilder.html
  def cli = new CliBuilder(usage: 'hl7-benchmark -[t] type -[c] concurrency -[n] messages -[s] ip:port')

  cli.with {
      h longOpt: 'help',        'Show usage information'
      t longOpt: 'type',        args: 1, argName: 'type',        'mllp|soap'
      c longOpt: 'concurrency', args: 1, argName: 'concurrency', 'number of processes sending messages'
      n longOpt: 'messages',    args: 1, argName: 'messages',    'number of messages to be send by each process'
      s longOpt: 'ip:port',     args: 2, argName: 'ip:port',     'server IP address:server port',                 valueSeparator: ':'
  }

  def options = cli.parse(args)

答案 2 :(得分: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;
}