冒泡排序C语言实现 - 源码详解

    冒泡排序

    时间复杂度: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]);
				}
			}
		}
}

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值