1、算法思想
- 冒泡排序就是将大的元素往后移动,类似排队排成一列,从前往后进行n轮遍历,每次从最前面的人开始,将他和他身后的人比较,高的站后面。然后第二个人和第三个人继续比较,高的站后面。
- 第一轮结束后,最高的那个就站在最后了。然后除去最后最高的那个继续排序,进行若干轮则整个队列从低到高有序。
2、算法描述
- n个元素进行n-1次遍历,每次遍历把当前最大的元素找出来放在最后面
- 每次遍历从首元素开始,依此比较前后两元素的大小,大的放在后面
- 每次遍历后将遍历的区间减小1个单位
3、代码实现
#include <stdio.h>
void maopao_sort(int a[], int len);
int main()
{
int a[] = {4,6,7,6,2,3,5,1,9,8,5,3,5,6,8,6,7,3,1};
int len = sizeof(a)/sizeof(a[0]);
maopao_sort(a, len);
return 0;
}
void maopao_sort(int a[], int len)
{
for(int i = 0; i < len-1; i++)
{
int last = len-1-i;
for(int j = 0; j < last; j++)
{
if(a[j] > a[j+1])
{
int temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
for(int i = 0; i < len; i++)
{
printf("%d ", a[i]);
}
printf("");
}
运行效果
1 1 2 3 3 3 4 5 5 5 6 6 6 6 7 7 8 8 9