• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > C++ 冒泡排序数据结构、算法及改进算法

C++ 冒泡排序数据结构、算法及改进算法

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++冒泡排序算法,冒泡算法c++,c++数据结构与算法,数据结构与算法c++版,c++递归算法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

程序代码如下:

但是常规的冒泡,不管相邻的两个元素是否已经排好序,都要冒泡,这就没有必要了,所有我们对这点进行改进。设计一种及时终止的冒泡排序算法:

如果在一次冒泡过程中没有发生元素互换,则说明数组已经按序排列好了,没有必要再继续进行冒泡排序了。代码如下:

//
#include "stdafx.h"
#include <cmath>
#include <iostream>
using namespace std;
#define  MAXNUM 20
template<typename T>
void Swap(T& a, T& b)
{
    int t = a;
    a = b;
    b = t;
}
template<typename T>
bool Bubble(T a[], int n)
{//把数组a[0:n-1]中最大的元素通过冒泡移到右边
    bool swapped = false;//尚未发生交换
    for(int i =0 ;i < n-1; i++)
    {
        if(a[i] >a[i+1])
        {
            Swap(a[i],a[i+1]);
            swapped = true;//发生了交换
        }
    }
    return swapped;
}
template<typename T>
void BubbleSort(T a[],int n)
{//对数组a[0:n-1]中的n个元素进行冒泡排序
    for(int i = n;i > 1 && Bubble(a,i); i--);
}
int _tmain(int argc, _TCHAR* argv[])
{
    int a[MAXNUM];
    for(int i = 0 ;i< MAXNUM; i++)
    {
        a[i] = rand()%(MAXNUM*5);
    }
    for(int i =0; i< MAXNUM; i++)
        cout << a[i] << "  ";
    cout << endl;
    BubbleSort(a,MAXNUM);
    cout << "After BubbleSort: " << endl;
    for(int i =0; i< MAXNUM; i++)
        cout << a[i] << "  ";
    cin.get();
    return 0;
}
</div>
改进后的算法,在最坏的情况下执行的比较次数与常规冒泡一样,但是最好情况下次数减少为n-1。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c++ 快速排序算法【过程图解】
  • 详细总结C++的排序算法
  • C++堆排序算法的实现方法
  • c++冒泡排序示例分享
  • C++中的几种排序算法
  • C++ 冒泡排序数据结构、算法及改进算法
  • C++ 基本算法 冒泡法、交换法、选择法、实现代码集合

相关文章

  • 2017-05-28C语言中正切的相关函数总结
  • 2017-05-28C语言循环结构与时间函数用法实例教程
  • 2017-05-28C++编程中的命名空间基本知识讲解
  • 2017-05-28基于c++强制类型转换的(总结)详解
  • 2017-05-28解析Linux下的时间函数:设置以及获取时间的方法
  • 2017-05-28C语言获取消耗内存的方法
  • 2017-05-28解析C++无锁队列的实现代码
  • 2017-05-28string中c_str(),data(),copy(p,n)函数的用法总结
  • 2017-05-28解析如何用指针实现整型数据的加法
  • 2017-05-28C语言system 自动关机函数代码

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C++学习小结之语句
    • C++ Assert()断言机制原理以及使用方法
    • 详解C语言的随机数生成及其相关题目
    • C语言中全局数组和局部数组的问题
    • C语言const的修饰符
    • C语言使用回溯法解旅行售货员问题与图的m着色问题
    • 从汇编看c++中引用与指针的使用分析
    • C语言新建临时文件和临时文件名的方法
    • 基于C/C++时间函数的使用详解
    • C++ 整数拆分方法详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有