对数组中的n个数执行n-1遍检查操作,在每一遍执行时,对数组中剩余的尚未排序的元素进行如下操作:对相邻的两个元素进行比较,若排在后面的数小于排在前面的数,则交换其位置,这样每一遍操作中都将参与比较的数中的最大的数沉到数组的底部,经过n-1遍操作后,就将全部n个数按从小到大的顺序排好了。
#include <stdio.h>
#include <stdlib.h>
#define N 10
void BubbleSort(int a[], int n);
int main()
{
int i, n, a[N];
printf("Input n:");
scanf("%d", &n);
printf("Input %d numbers:", n);
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
BubbleSort(a, n);
printf("Sorting results:");
for (i = 0; i < n; i++)
printf("%4d", a[i]);
printf("\n");
return 0;
}
//使用冒泡法实现数组a 的n个元素的升序排列
void BubbleSort(int a[], int n)
{
int i, j, temp;
for (i = 0; i < n-1; i++)//执行n-1遍检查操作
for (j = 1; j < n-1; j++)//剩余的尚未排序的元素
if (a[j] < a[j-1])
{
temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
网友评论