赞
踩
时间复杂度:O(N²)
稳定性:稳定
排序原理:
从前往后依次比较相邻的两个数据(如0:1 1:2 2:3 3:4 ... n:tail),
根据排序方向,将最大(最小)值移到最后面,一次遍历浮出一个数据,
N次遍历之后,就将所有数据排序完成了。
排序过程:
见源码及注释
适用场景:
数据量少、算法时间要求低、数据相对有序的场景中,冒泡排序是一个比较好的选择,实现简单稳定性好。
参数:
data 排序数据
lenth 数据量
direction 排序方向 从大到小/从小到大
源码:
- void BubbleSort(int* data, int lenth, int direction)
- {
- int i, j;
-
- if(direction)//从小到大
- for (j = lenth - 1; j > 1; j--)//已排序数据放到最后面 遍历长度减-
- {
- for (i = 0; i < j; i++)//从前往后遍历 泡泡往后挤
- {
- if (data[i] > data[i + 1])//把大的数据往后移动 注意两数相等的情况是不交换的 算法相对稳定
- {
- DataSwap(data[i], data[i + 1]);//两数交换
- }
- }
- }
- else//从大到小
- for (j = 0; j < lenth - 1; j++)//已排序数据放到最前面
- {
- for (i = lenth - 1; i > j; i--)//从后往前遍历 泡泡往前挤
- {
- if (data[i] > data[i - 1])//把大的数据前移
- {
- DataSwap(data[i], data[i - 1]);
- }
- }
- }
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。