①题目是:输入n个整数作为数组a的元素,使用冒泡排序将数组a按元素从小到大的顺序排序,并且输出排序的总趟数。
②这是我写的代码:
#include<stdio.h>
#define size 5
void Q(int a[], int n)
{
int i, m, j, q = 0, p = 0;
for (j = 0; j < n - 1; j++)
{
for (i = 0; i < n - 1; i++)
{
if (a[i] > a[i + 1])
{
q = 1;
}
}
if (!q)
{
break;
}
for (i = n - 1; i >= j + 1; i--)
{
if (a[i] < a[i - 1])
{
m = a[i - 1];
a[i - 1] = a[i];
a[i] = m;
}
}
p++;
for (i = 0; i < n - 1; i++)
{
if (a[i] > a[i + 1])
{
q = 1;
}
}
if (!q)
{
break;
}
}
printf("趟数的次数为%d次\n", p);
return;
}
int main()
{
int a[size], n, i;
printf("请输入数组的元素个数n:");
scanf_s("%d", &n);
printf("请输入数组元素的值:");
for (i = 0; i < n; i++)
{
scanf_s("%d", &a[i]);
}
printf("原先的数组是:");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
printf("\n");
Q(a, n);
printf("排序后的数组是:");
for (i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}