一、原理
冒泡排序就是从头开始相邻的两个数比较大小。例如,对无序表{49,38,65,97,76,13,27,49}
进行升序排序的具体实现过程如图 1 所示:
图 1 第一次起泡
二、代码
#include <stdio.h>
//交换sp1和sp2的位置的函数
void swap(int *sp1, int *sp2) {
int temp;
temp = *sp1;
*sp1 = *sp2;
*sp2 = temp;
}
//自定义的输出函数
void print(int a[], int n) {
for (int j = 0; j<n; j++) {
printf("%d\t", a[j]);
}
printf("\n");
}
void BubbleSort(int a[],int n) {
//冒泡次数比要比数据个数少一次
int num = n - 1;
for (int i = 0; i < num; i++) {
for (int j = 0; j<num - i; j++) {
if (a[j] > a[j + 1]) {
swap(&a[j], &a[j + 1]);
}
}
print(a, n);
}
}
int main()
{
int array[8] = { 6,8,2,4,1,5,3,7 };
//8个数要冒泡7次
BubbleSort(array, 8);
return 0;
}