C语言排序算法之冒泡排序实现方法【改进版】

 更新时间:2017年09月25日 09:16:39   作者:liyuxia713  
这篇文章主要介绍了C语言排序算法之冒泡排序实现方法,结合具体实例形式分析了C语言实现的基本冒泡排序实现方法及增设flag标志位的改进型算法,需要的朋友可以参考下

本文实例讲述了C语言排序算法之冒泡排序实现方法。分享给大家供大家参考,具体如下:

冒泡排序和改进的冒泡排序

/*-------------------------------------------------------------------------------------------
Bubble_sort.h
冒泡排序: 时间复杂度为O(N^2)
改进的冒泡排序: 时间复杂度仍为O(N^2)
  一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序
  设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
-------------------------------------------------------------------------------------------*/
#ifndef BUBBLE_SORT_H
#define BUBBLE_SORT_H
#include "typedef.h"
#include "swap.h"
//冒泡排序
void Bubble_sort(T *a, int n)
{
  for(int i=n-1; i != 0; --i)
    for(int j=0; j != i; ++j)
      if(a[j+1] < a[j]) swap(a[j+1],a[j]);
}
//改进的冒泡排序
void Improved_Bubble_sort(T *a, int n)
{
  for(int i=n-1; i != 0; --i)
  {
    bool flag = true;
    for(int j=0; j != i; ++j) //这一趟遍历如果没有交换,则已完成排序
      if(a[j+1] < a[j]) { swap(a[j+1],a[j]); flag = false; }
    if(flag == true) break;
  }
}
#endif

希望本文所述对大家C语言程序设计有所帮助。

相关文章

  • C语言中qsort函数的介绍与用法实例

    C语言中qsort函数的介绍与用法实例

    C语言的标准库提供了一个重要的排序函数qsort给C语言使用者使用,qsort函数将快速排序的算法封装起来,这篇文章主要给大家介绍了关于C语言中qsort函数的介绍与用法的相关资料,需要的朋友可以参考下
    2021-09-09
  • 关于C++ string和c类型字符数组的对比

    关于C++ string和c类型字符数组的对比

    下面小编就为大家带来一篇关于C++ string和c类型字符数组的对比。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • c++11中regex正则表达式示例简述

    c++11中regex正则表达式示例简述

    这篇文章主要给大家介绍了关于c++11中regex正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用c++11具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • 举例解析设计模式中的工厂方法模式在C++编程中的运用

    举例解析设计模式中的工厂方法模式在C++编程中的运用

    这篇文章主要介绍了设计模式中的工厂方法模式在C++编程中的运用,文中也对简单工厂模式和工厂方法模式进行了简单的对比,需要的朋友可以参考下
    2016-03-03
  • C++实现涂色游戏(博弈)

    C++实现涂色游戏(博弈)

    这篇文章主要为大家详细介绍了C++实现涂色游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • C++模板特例化应用实例

    C++模板特例化应用实例

    这篇文章主要介绍了C++模板特例化应用实例,是非常重要的一个概念,需要的朋友可以参考下
    2014-08-08
  • C语言数据结构之平衡二叉树(AVL树)实现方法示例

    C语言数据结构之平衡二叉树(AVL树)实现方法示例

    这篇文章主要介绍了C语言数据结构之平衡二叉树(AVL树)实现方法,结合实例形式分析了C语言平衡二叉树的相关定义与使用技巧,需要的朋友可以参考下
    2018-01-01
  • 简述C++的复杂性

    简述C++的复杂性

    这篇文章主要介绍了简述C++的复杂性,帮助大家更好的理解和认识c++编程语言,感兴趣的朋友可以了解下
    2020-08-08
  • 使用Clion刷LeetCode的方法

    使用Clion刷LeetCode的方法

    这篇文章主要介绍了使用Clion刷LeetCode的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • C++中多态的定义及实现详解

    C++中多态的定义及实现详解

    这篇文章主要给大家介绍了关于C++中多态的定义及实现的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05

最新评论