冒泡排序算法
基本原理
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。
动画演示
示例代码
#include<stdio.h>
void BubbleSort(int array[], int len)
{
int i, j, temp;
for (j = 0; j < len - 1; j++)
{
for (i = 0; i < len - 1 - j; i++)
{
if (array[i] > array[i + 1])
{
temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
}
}
void PrintArray(int array[], int len)
{
int i = 0;
for (i = 0; i < len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
int main()
{
int arr[] = { 29, 10, 14, 37, 8 };
int len = sizeof(arr) / sizeof(arr[0]);
int i = 0;
printf("冒泡排序前:");
PrintArray(arr,len);
BubbleSort(arr, len);
printf("冒泡排序后:");
PrintArray(arr,len);
return 0;
}