数据结构--双向冒泡排序

BJFU_数据结构习题_295基于双向链表的双向冒泡排序法 295基于双向链表的双向冒泡排序法 描述 有n个记录存储在带头结点的双向链表中,利用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向冒泡排序即相邻两趟排序向相反方向冒泡)。 输入 多组数据,每组数据两行。第一行为序列的长度n,第二行为序列的n个元素(元素之间用空格分隔,元素都为正整数)。当n等于0时,输入结束。 输出 每组数据输出一行,为从小到大排序后的序列。每两个元素之间用空... 阅读详情

双向冒泡排序,又名鸡尾酒混合排序,是对冒泡排序的一种改进算法。
每完成一次循环就将最大元素排在队尾,最小值排到队头,时间成本能节约1倍。

其算法如下:

void DoubleBubbleSort(int r[],int size)
{
    int i,low=0,high=size-1,temp;
    bool exchange;
    while(low<high)
    {
        exchange=false;
        //从前往后进行一次冒泡排序,将最大的值放在最后一个位置 
        for(i=low;i<high;++i)
        {
            if(r[i]>r[i+1]) //如果前面的值比后面的值大,发生交换 
            {
                temp=r[i];
                r[i]=r[i+1];
                r[i+1]=temp;
                exchange=true;
            }
        }
        //从后往前进行一次冒泡排序,将最小的值放在第一个位置 
        for(i=high-1;i>low;--i)
        {
            if(r[i]<r[i-1]) //如果后面的值比前面的值小,发生交换
            {
                temp=r[i];
                r[i]=r[i-1];
                r[i-1]=temp;
                exchange=true;
            }
        }
        if(!exchange)   //本趟没有发生交换,提前终止 
            return;
        //更新上下边界 
        ++low;
        --high;
    }   
}
双向冒泡排序算法 双向冒泡排序(Cocktail Shaker Sort)是传统冒泡排序的改进版本,通过双向交替扫描数组,在每轮循环中同时将最大值移动到右侧、最小值移动到左侧,从而减少排序轮次。对完全逆序数组(如[5,4,3,2,1])与传统冒泡效率相同。比较6和4 → 交换 → [4,6,7,8,2]比较8和2 → 交换 → [4,6,7,2,8]比较7和2 → 交换 → [4,6,2,7,8]比较6和2 → 交换 → [4,2,6,7,8]比较4和2 → 交换 → [2,4,6,7,8] 阅读详情

相关推荐

双向冒泡排序(C语言)

用C语言开发的双向冒泡排序算法,具体内容详见代码。

冒泡排序(双向)

基本算法思想: (1)双向冒泡排序是冒泡排序的一种优化,它的基本思想是首先将第一个记录的关键字和第二个记录的关键字进行比较,若为“逆序”,则将两个记录交换,然后比较第二个记录和第三个记录的关键字。依次类推,直至第n-1个记录的关键字和第n个记录的关键字比较过为止。这是第一趟冒泡排序,其结果是使得关键字最大的记录被安置到最后一个记录的位置上。 (2)第一趟排序之后进行第二趟冒泡排序,将第n-2个记

小僧Coding 3154

/proc/sys/vm/max_map_count耗尽时,调用glibc 2.11.3 free()导致程序crash,问题追踪和解决

1. 问题 在客户环境下,当我们的程序消耗较大内存时,会偶尔crash。 通过gdb分析,程序core dump在malloc/free函数内。 当把/proc/sys/vm/max_map_count 从65530增加到131070,程序再也不crash。 相关命令 echo 131073 > /proc/sys/vm/max_map_count 2.  core

万大胖博客,苦并快乐着 4430

双向排序的冒泡算法

双向排序算法,在冒泡的算法上做改进。简单来说就是找到一个大的值,在去找一个小的值。先排右边第一个数据,再排左边第一个,以此类推。(在做一个判断小优化以下,比如右边的第一个已经排完了,和他前一个值相等,前一个值也不需要再排了,标志位移动一下就可以了)。

m0_73202138的博客 661

ZYNQ出现问题及解决办法汇总(一直更新)

问题目录使用软件及开发板版本一,vitis在build project时卡住。二,Could not find FPGA device on the board for connection 'Local'三,FPGA configuration failed:DONE PIN is not high四,Could not find ARM device on the board for connection 'Local' 使用软件及开发板版本 开发板:MZ7XA-7020 软件:vitis2020.2(

qq_45057368的博客 1万+

NVIDIA Tao Toolkit环境配置踩坑

请搭配食用该文章为 Tao 安装中可能出现的问题进行解答,如果存在本文章中没出现的问题,欢迎提问,由我复现后更新文章。由于大部分云服务器厂商不能支持 docker,因此我使用的环境为2023年5月27日在平台租的 3080 旧版环境进行实验。

qq_36630208的博客 771

【经典算法实现 3】冒泡排序算法(单向冒泡,双向冒泡)

【经典算法实现 3】冒泡排序算法 及 算法优化一、冒泡排度算法实现 (n^2)(从小到大)1. 核心算法实现2. 代码实测 一、冒泡排度算法实现 (n^2)(从小到大) 冒泡排序的思想就是: 每次选取两个元素进行比较,如果后者小于前者,则将两个数据进行交换。 如果数据个数为n,需要比较的次数为n(n-1) / 2,时间复杂度记作 O(n^2) 1. 核心算法实现 void sort(int *array, int array_len){ int i=0, j=0, k=0 for(i = 0;

|~~~热爱生活、努力学习的小伙汁~~~| 1129

手把手教你完成YOLOv8分类识别界面搭建,使用Qt6设计YOLOv8分类识别系统,前台系统+后台管理系统开发实战,全网最详细教程

本项目基于YOLOv8分类模型,结合PySide6框架开发了一套图形化分类识别系统,支持图片、视频和摄像头实时检测。系统包含以下功能: 分类识别模块:完成图像/视频目标分类,界面展示检测结果。 用户管理模块:支持登录注册、头像修改、密码重置等功能。 AI问答模块:集成DeepSeek大模型接口,实现流式输出对话。 后台管理系统(第二版新增):管理员可管理用户信息及个人中心。 系统采用MySQL数据库存储用户数据,并提供完整的UI界面与交互逻辑。代码已开源,适用于毕业设计或快速部署场景。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 825

排序:双向冒泡排序(C)

这是常用的一些基本排序算法. 数据结构 先定义公共的数据结构 typedef int KeyType; typedef struct { KeyType key; }RecType; typedef RecType SeqSortList[MAXSIZE+1];//表中的0元素空着或用作哨兵单元 一般把数组中的第0个位置预留出来,为了就作为哨兵,进行两个数据进行交换时,可以把哨兵作为...

forwardyzk的专栏 1437

C#实现OPC客户端与S7-1200 PLC通信:工控场景稳定通信的实战指南(附完整代码)

标准化优先:OPC UA是工业通信的标准,相比直接通信,更适合多设备集成的工控场景;稳定性第一:必须封装断线重连、异常处理、资源释放逻辑,满足7×24小时运行需求;效率优化:高频采集场景优先用批量读写,避免单个变量频繁请求;细节把控:节点ID、变量类型、端口配置等细节是新手最容易踩坑的地方,建议先用UA Expert验证。这套代码和方案已在多个工业项目中落地,从单台S7-1200到多台S7-1200/1500集群,都能稳定运行。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1036

零基础学GPU KMD--8. 内存管理:GPU 显存与系统内存的协同​8.1 显存分配策略:GEM / TTM 原理

支持 VRAM、GTT(Graphics Translation Table)、SYSTEM 内存的动态迁移与缓存管理。:若缓冲区在 SYSTEM,TTM 分配 GTT 条目并建立页表映射,使 GPU 可直接访问。:系统内存中预留给 GPU 直接访问的区域,通过 GPU 的 MMU 做地址翻译。你需要我继续展开这一部分吗?​ 为复杂离散 GPU 设计,应对大容量 VRAM、多内存域、显存迁移等问题。:重量级、功能全,适合大容量、多内存域的离散 GPU,强调显存迁移与统一管理。

amy_mhd的博客 185

常用的数据结构之冒泡排序以及双向冒泡排序

冒泡排序是通过一系列的交换动作来完成的。具体算法 void BubbleSort(int a[],int n){ int falg=0; for(int i=n-1;i>=1;i++){ for(j=1;j<=n;j++){ if(a[j]<a[j-1]){ temp=a[j-1]; a[j-1]=a[j]; a[j]=temp...

weixin_43770577的博客 1232

WCK Operation (WCK 操作)

LPDDR6 SDRAM采用双时钟系统(WCK和CK),其中WCK频率是CK的两倍。为确保数据正确传输,需通过WCK2CK同步操作使两种时钟对齐。LPDDR6支持两种同步模式:Auto-sync off模式和WCK Always on模式,可通过MR22寄存器选择。同步操作由特定命令(Read/Write/MRR等)触发,需在满足特定时序参数(如tWCKENL、tWCKPRE等)后完成。同步前必须完成WCK2CK训练,且不同操作(读取/写入/CAS)有各自的时序要求。该机制确保数据在正确时钟相位下传输,是L

李家小院 650

【数据结构】双向冒泡排序

有n个整数构成无序序列a,设计一个双向冒泡排序算法对序列a进行递减排序,即在排序过程中交替改变扫描序列的方向。

weixin_52049271的博客 949

中国农业银行——轻量式云原生应用平台(轻云平台)

2021年10月,中国人民银行等联合发布了《关于规范金融业开源技术应用与发展的意见》(银办发〔2021〕146 号),规范金融机构合理应用开源技术,提高应用水平和自主可控能力,促进开源技术健康可持续发展。前期,为助力成员单位做好开源技术应用与发展工作,北京金融科技产业联盟开源专委会组织了金融业开源技术应用、创新等方面的案例征集,现对部分优秀案例进行宣传,发挥先进典型示范引领作用。申报单位:中国农业银行股份有限公司技术领域:云原生、无服务器架构(Serverless)、DevOps。

银行信息系统应用架构详解 2392

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

数据结构习题——双向冒泡排序编写

前言 关于排序 正文 借此回顾一下冒泡排序 题目 编写双向冒泡程序,第一趟把数字大的放后面,第二趟把数字小的放前面,往复直到排序完成 low,high两个工作指针,一个从头部遍历,一个从尾部遍历,当相遇时或flag=0时排序完成。 先从前往后冒泡排序,把数字大的放在后面,high– 然后从后往前冒泡排序,把数字小的放在前面,low++ void BubbleSort(int a[],int n){ int low=0,high=n-1; int i,j,flag=1; while(low<hig

无由页的博客 1021

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

数据结构(C/C++)双向链表双向冒泡排序

双向链表做冒泡排序

qq_16674623的博客 1991

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

双向冒泡排序的数据结构实验报告

冒泡排序是交换排序中一种简单的排序方法。其基本思想是对所有相邻的关键字值进行比效,如果是逆顺(a[j]>a[j+1]),则将其交换,最终达到排序的目的。双向冒泡排序算法是对传统冒泡排序算法的一种改进,通过同时从左到右和从右到左两个方向进行比较和交换,减少了排序的轮数。在开始编写代码之前,我首先对双向冒泡排序算法的原理进行了深入的学习和理解。这包括了如何确定左右边界、两个方向的比较和交换操作等。

2301_76690905的博客 1071

【数据结构与算法】有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按上升序进行排序

有n个记录存储在带头结点的双向链表中,现用双向冒泡排序法对其按上升序进行排序,请写出这种排序的算法。(注:双向冒泡排序即相邻两趟排序向相反方向冒泡)

知识虔诚的信徒,探索所有未知是信徒毕生的信仰 7437

数据结构实验-折半插入排序-双向冒泡排序

折半插入排序,折半插入排序是在直接插入的改进,通过折半查找得到插入位置,减少比较次数。折半插入排序的基本思想是:设在数据表中有一个元素序列a[0],a[1],……,a[n-1]。其中,a[0],a[1],……,a[i-1]已经排好序。在插入a[1]时,利用折半查找法寻找a[i]的插入位置。在排序第i个数时,前i-1个数已经排序完成,这是折中排序的前提,所以在开始排序时起始位置为i=1折中排序,顾名思义就是折中,所以在折中排序时,先要以谁开头以谁结尾,所以需要定义两个变量front,end,有了这两个变量才能

m0_63064861的博客 801

Go数据结构与算法-双向冒泡排序(鸡尾酒排序)

title: Go数据结构与算法-双向冒泡排序(鸡尾酒排序) tags: go,算法 介绍 上一篇我们讲了冒泡排序的优化,现在我们再来优化一下,链表我们有单链表,双链表之分,并且双链表的查询效率比单链表高得多,那么冒泡排序能否双向排序呢?答案是肯定的。 基本思想 每趟向后遍历排为从低到高,再向前遍历从高到低。 排序过程 依然使用数组 [29 10 14 37 14] [UNSORTED]:...

Clown95 551

数据结构Java版(二):用递归计算二叉树中叶子节点数目、实现图的存储、实现二分查找算法、实现双向冒泡排序算法

数据结构Java版(二):用递归计算二叉树中叶子节点数目、实现图的存储、实现二分查找算法、实现双向冒泡排序算法

weixin_50736686的博客 1055

双向链表的双向冒泡排序

数据结构

m0_65185254的博客 1193

双向链表实现双向冒泡排序

n个记录存储在带头结点的双向链表中,利用双向冒泡排序对其进行升序排序。

We choose to go to the moon in this decade and do the other things, not because they are easy, but beacase they are hard. 2471

SWUST OJ 960: 双向链表的操作问题

先给代码,然后再分析一下两个排序方法 题目描述 建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成,数据类型为整型。) 输入 第一行:双向表的长度; 第二行:链表中的数据元素。 输出 输出双向链表中的数据元素的值。 样例输入 10 2 4 6 3 5 8 10 21 12 9 样例输出 2 3 4 5 6 8 9 10 12 21 /*双向链表的操作...

xiaodaitongxue的博客 1671

排序问题-冒泡排序

(1)排序算法系列:冒泡排序与双向冒泡排序 https://blog.youkuaiyun.com/lemon_tree12138/article/details/50591859 (2)双向循环链表的冒泡排序 https://blog.youkuaiyun.com/longintchar/article/details/78638975 ...

JxufeCarol的博客 394
上一篇: 数据结构--快速排序
下一篇: 数据结构-二路插入排序
Nim的辙迹
博客等级 码龄10年 17粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值