对于冒泡排序算法,每次传入 c 后如何打印数组?

How to print array after each pass in c for a bubblesort algorithm?

我正在使用我在网上找到的这个 bubblesort 代码作为这个问题的参考 (https://www.programmingsimplified.com/c/source-code/c-program-bubble-sort)。

#include <stdio.h>

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

  printf("Enter number of elements\n");
  scanf("%d", &n);

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

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

  for (c = 0 ; c < ( n - 1 ); c++)
  {
    for (d = 0 ; d < n - c - 1; d++)
    {
      if (array[d] > array[d+1]) /* For decreasing order use < */
      {
        swap       = array[d];
        array[d]   = array[d+1];
        array[d+1] = swap;
      }
    }
  }

  printf("Sorted list in ascending order:\n");

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

  return 0;
}

如果我希望它在每次进行交换时打印数组,我应该做哪些更改?

您应该创建一个函数来显示数组的所有元素。这是一个奇特的版本:

void print_array(int *array, int size) {
    int i;
    putchar('{');    /* Make sure your array isn't empty or add a check */
    for (i = 0; i < size; i++) {
        printf("%d%s", array[i], i + 1 == size ? "}" : ", ");
    }   /* The second argument is a ternary operator to put a ',' or a '}' */
}

在此处添加:

for (c = 0 ; c < ( n - 1 ); c++)
{
    for (d = 0 ; d < n - c - 1; d++)
    {
        if (array[d] > array[d+1]) /* For decreasing order use < */
        {
            swap       = array[d];
            array[d]   = array[d+1];
            array[d+1] = swap;
            print_array(array, 100);
            putchar('\n');
        }
    }
}