C语言排序算法之冒泡排序实现方法【改进版】
更新时间:2017年09月25日 09:16:39 作者:liyuxia713
这篇文章主要介绍了C语言排序算法之冒泡排序实现方法,结合具体实例形式分析了C语言实现的基本冒泡排序实现方法及增设flag标志位的改进型算法,需要的朋友可以参考下
脚本之家 / 编程助手:解决程序员“几乎”所有问题!
脚本之家官方知识库 → 点击立即使用
本文实例讲述了C语言排序算法之冒泡排序实现方法。分享给大家供大家参考,具体如下:
冒泡排序和改进的冒泡排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /*------------------------------------------------------------------------------------------- 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语言程序设计有所帮助。
微信公众号搜索 “ 脚本之家 ” ,选择关注
程序猿的那些事、送书等活动等着你
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 reterry123@163.com 进行投诉反馈,一经查实,立即处理!
相关文章
c语言之char*和unsigned char*的区别及说明
这篇文章主要介绍了c语言之char*和unsigned char*的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-08-08
最新评论