基本排序算法及分析(二):冒泡排序

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

 1/**//*-------------------------------------------------------------------------------------------
 2Bubble_sort.h
 3冒泡排序: 时间复杂度为O(N^2)
 4改进的冒泡排序: 时间复杂度仍为O(N^2)
 5    一般的冒泡排序方法有可能会在已经排好序的情况下继续比较,改进的冒泡排序
 6    设置了一个哨兵flag,如果一次for循环没有进行交换,则元素已经排好序,由哨兵控制退出循环。
 7-------------------------------------------------------------------------------------------*/

 8#ifndef BUBBLE_SORT_H
 9#define BUBBLE_SORT_H
10
11#include "typedef.h"
12#include "swap.h"
13
14//冒泡排序
15void Bubble_sort(T *a, int n)
16{
17    for(int i=n-1; i != 0--i)
18        for(int j=0; j != i; ++j)
19            if(a[j+1< a[j]) swap(a[j+1],a[j]);
20}

21
22//改进的冒泡排序
23void Improved_Bubble_sort(T *a, int n)
24{    
25    for(int i=n-1; i != 0--i)
26    {
27        bool flag = true;
28        for(int j=0; j != i; ++j) //这一趟遍历如果没有交换,则已完成排序
29            if(a[j+1< a[j])  { swap(a[j+1],a[j]); flag = false; }
30        if(flag == truebreak;
31    }

32}

33
34#endif



幸运草 2009-04-22 16:46 发表评论

转载于:https://www.cnblogs.com/liyuxia713/archive/2009/04/22/2540781.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463497.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洛谷负环板子题

洛谷负环板子题 差点没笑死我 之前的题解都在清一色diss bfs&#xff0c;吹爆dfs 如今改了数据bfs又崛起了&#xff0c;dfs回家种地了&#xff0c;哈哈哈哈哈 dfs版 1 // luogu-judger-enable-o22 #include<iostream>3 #include<cstdio>4 #include<queue>5 #…

std::vector中resize()和reserve()区别

在STL容器中vector用的还是比较多的&#xff0c;但是在使用时&#xff0c;会对resize()和reserve()的使用产生迷惑&#xff0c;现在就对这一情况做个对比&#xff1a; resize()&#xff1a;改变的是size()与capacity()的大小 (1)、比原来的变小之后&#xff0c;后面的会被截断…

设计师和开发人员更快完成工作需求的35个惊人的jquery插件教程(下)

jQuery是一个快速&#xff0c;简洁的工具&#xff0c;它可以遍历HTML文档&#xff0c;处理事件&#xff0c;执行动画&#xff0c;并添加AJAX。jQuery赋予web开发更多的选择机会&#xff0c;使网站产生令人难以置信的元素效果不像之前需要写下几十行代码实现相同的效果&#xff…

C#中一些格式的转换

1、DateTime 数字型 System.DateTime currentTimenew System.DateTime(); 1.1 取当前年月日时分秒 currentTimeSystem.DateTime.Now; 1.2 取当前年 int 年currentTime.Year; 1.3 取当前月 int 月currentTime.Month;1.4 取当前日 int 日currentTime.Day; 1.5 取当前时 int 时cu…

红黑树相关的信息

转载&#xff1a;https://www.cnblogs.com/wuchanming/p/4444961.html 红黑树相关的知识点&#xff0c;提高自己和面试应该用的到 1.stl中的set底层用的什么数据结构&#xff1f; 2.红黑树的数据结构怎么定义的&#xff1f; 3.红黑树有哪些性质&#xff1f; 4.红黑树的…

spring restTemplate使用方法

https://github.com/lenve/SimpleSpringCloud/tree/master/RestTemplate在Spring Cloud中服务的发现与消费一文中&#xff0c;当我们从服务消费端去调用服务提供者的服务的时候&#xff0c;使用了一个很好用的对象&#xff0c;叫做RestTemplate&#xff0c;当时我们只使用了Res…

打印菱形星号组合C程序

#include "stdio.h" #define N 9 //数组的行列数 int main(){char str[N][N]{0}; //例子,行列数应该是奇数int i,j;for(i0;i<N;i)for(j0;j<N;j)str[i][j] ;//先全部设为空格//在特定位置写入*号for(i0;i<N;i)for(j0;j<N;j){if(i0 || iN…

程序员的十层楼(11层)

第11层 上帝 看了上面的小标题&#xff0c;你可能会觉得奇怪&#xff0c;这篇文章不是讲“程序员的十层楼”吗&#xff1f;怎么冒出了第11层来了&#xff1f; 其实这并不矛盾&#xff0c;程序员确实只有十层楼&#xff0c;因为爬到第11层时&#xff0c;已经变成上帝&#xff0c…

函数局部变量和函数的参数在栈中的布局

#include <stdio.h> #include <iostream>using namespace std; void func(int p1, int p2, int p3) {int a p1;int b p2;int c p3;std::cout << "函数参数入栈顺序(栈在内存中向上伸长):从右到左" << std::endl;std::cout << &quo…

经验:Windows To Go准备工作

如果您准备使用USB设备带着您的移动Windows的话&#xff0c;您需要做好准备。从开发预览版到正式版&#xff0c;我也一直关注着Windows Go To这个新功能&#xff0c;所以&#xff0c;总结了些经验&#xff0c;分享给大家&#xff0c;希望能够帮助到大家&#xff0c;或者减少您的…

图表相同数据会自动合并问题(finereport)

finereport中&#xff0c;对于图表的操作&#xff0c;当遇到需要显示多个重复分类下的多个值时&#xff0c;由于自动合并相同数据&#xff0c;无法达到效果反复查询手册无果后&#xff0c;困扰好久&#xff0c;终想到了一个解决的办法&#xff1a;1、给查询的数据添加个列序号&…

简单的C语言程序合集

输出九九乘法表1 #include <stdio.h>2 int main()3 {4 int i,j;5 for(i1;i<9;)6 {7 for(j1;j<9;j)8 {9 if(i>j)10 {11 printf("%d*%d%d ",j,i,j*i);12 }13…

C#中读取“已注册的文件类型”的图标及读取指定文件图标的方法 (转)

usingSystem;usingSystem.IO;usingSystem.Drawing;usingMicrosoft.Win32;usingSystem.Runtime.InteropServices;namespaceGetIconDemo { ///<summary>///提供从操作系统读取图标的方法 ///</summary>publicclassGetSystemIcon { ///<summary>///依…

Redis基础知识点

Redis基础知识点&#xff1a; 1、Redis 采用的是基于内存的单进程单线程模型的 key-value 数据库。 2、默认16个数据库&#xff0c;类似数组下表从 0 开始&#xff0c;初始默认使用零号库。 select 0~15 命令用于在 0 ~ 15 号库之间进行切换 3、dbsize 命令查看当前数据库的 …

关于SQLSERVER的全文目录跟全文索引的区别

很久没有写随笔了&#xff0c;本来之前想写一篇关于SQLSERVER全文索引的随笔&#xff0c;可惜没有时间&#xff0c;一直拖到现在才有时间写&#xff0c;不好意思让各位久等了~ 先介绍一下SQLSERVER中的存储类对象&#xff0c;哈哈&#xff0c;先介绍一下概念嘛&#xff0c;让新…

安装rlwrap 的简单方法

1. 下载安装 epel包 rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 2. 安装rlwrap yum install rlwrap -y 然后进入oracle 就可以 正常的上下键进行功能切换了 注意需要使用命令 rlwrap sqlplus / as sysdba 转载于:https://www.cnblogs.…

简单的C语言程序合集-2

输入一个整数n&#xff0c;求从1到n这n个整数的十进制表示中1出现的次数。&#xff08;google面试题&#xff09; #include <stdio.h>int main(){int n, N, count 0;printf("plesae input a number: ");scanf("%d",&N);for(n1;n<N; n){ in…

在Delphi中如何创建和使用udl文件

如何在Delphi中创建和使用udl文件&#xff1a;方法一&#xff1a;直接弹出UDL对话框:use ADOConed; EditConnectionString(ADOQuery1);方法二&#xff1a;⑴、右键---新建---文本文档&#xff0c;重命名为 connSet.udl 。⑵、双击打开 connSet.udl 按提示操作配置数据库&#x…

redis事务的简单介绍

所谓事务应具有以下特效&#xff1a;原子性(Atomicity)&#xff0c; 一致性(Consistency)&#xff0c;隔离性(Isolation)&#xff0c;持久性(Durability)&#xff0c;简称ACID&#xff0c;但redis所提供的事务比较简单&#xff0c;它通过MULTI、EXEC、DISCARD和WATCH等命令实现…

Android Zip文件解压缩代码

在Android平台中如何实现Zip文件的解压缩功能呢? 因为Android内部已经集成了zlib库&#xff0c;对于英文和非密码的Zip文件解压缩还是比较简单的&#xff0c;下面Android123给大家一个解压缩zip的java代码&#xff0c;可以在Android上任何版本中使用&#xff0c;Unzip这个静态…