当前位置:   article > 正文

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

冒泡排序c语言代码

    冒泡排序

    时间复杂度:O(N²)

    稳定性:稳定

    排序原理:
        从前往后依次比较相邻的两个数据(如0:1 1:2 2:3 3:4 ... n:tail),
        根据排序方向,将最大(最小)值移到最后面,一次遍历浮出一个数据,
        N次遍历之后,就将所有数据排序完成了。

    排序过程:
        见源码及注释

    适用场景:
        数据量少、算法时间要求低、数据相对有序的场景中,冒泡排序是一个比较好的选择,实现简单稳定性好。

    参数:
        data 排序数据
        lenth 数据量
        direction 排序方向 从大到小/从小到大

    源码:

  1. void BubbleSort(int* data, int lenth, int direction)
  2. {
  3. int i, j;
  4. if(direction)//从小到大
  5. for (j = lenth - 1; j > 1; j--)//已排序数据放到最后面 遍历长度减-
  6. {
  7. for (i = 0; i < j; i++)//从前往后遍历 泡泡往后挤
  8. {
  9. if (data[i] > data[i + 1])//把大的数据往后移动 注意两数相等的情况是不交换的 算法相对稳定
  10. {
  11. DataSwap(data[i], data[i + 1]);//两数交换
  12. }
  13. }
  14. }
  15. else//从大到小
  16. for (j = 0; j < lenth - 1; j++)//已排序数据放到最前面
  17. {
  18. for (i = lenth - 1; i > j; i--)//从后往前遍历 泡泡往前挤
  19. {
  20. if (data[i] > data[i - 1])//把大的数据前移
  21. {
  22. DataSwap(data[i], data[i - 1]);
  23. }
  24. }
  25. }
  26. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/806118
推荐阅读
相关标签
  

闽ICP备14008679号