当前位置: 首页 > news >正文

基于C#实现鸡尾酒排序(双向冒泡排序)

通俗易懂点的话,就叫“双向冒泡排序”。
冒泡是一个单向的从小到大或者从大到小的交换排序,而鸡尾酒排序是双向的,从一端进行从小到大排序,从另一端进行从大到小排序。
image.png
从图中可以看到,第一次正向比较,我们找到了最大值 9.
第一次反向比较,我们找到了最小值1.
第二次正向比较,我们找到了次大值8.
第二次反向比较,我们找到了次小值2
……
最后就大功告成了。
下面我们看看代码:

 using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Xml.Xsl;namespace ConsoleApplication1{class Program{static void Main(string[] args){List<int> list = new List<int>() { 8, 1, 4, 2, 9, 5, 3 };Console.WriteLine("\n排序前 => {0}\n", string.Join(",", list));list = CockTailSort(list);Console.WriteLine("\n排序后 => {0}\n", string.Join(",", list));Console.Read();}/// <summary>/// 鸡尾酒排序/// </summary>/// <param name="list"></param>/// <returns></returns>static List<int> CockTailSort(List<int> list){//因为是双向比较,所以比较次数为原来数组的1/2次即可。for (int i = 1; i <= list.Count / 2; i++){//从前到后的排序 (升序)for (int m = i - 1; m <= list.Count - i; m++){//如果前面大于后面,则进行交换if (m + 1 < list.Count && list[m] > list[m + 1]){var temp = list[m];list[m] = list[m + 1];list[m + 1] = temp;}}Console.WriteLine("正向排序 => {0}", string.Join(",", list));//从后到前的排序(降序)for (int n = list.Count - i - 1; n >= i; n--){//如果前面大于后面,则进行交换if (n > 0 && list[n - 1] > list[n]){var temp = list[n];list[n] = list[n - 1];list[n - 1] = temp;}}Console.WriteLine("反向排序 => {0}", string.Join(",", list));}return list;}}}

image.png
从结果上面看,我们会发现,当数组有序的时候,我们还会继续往下排,知道完成 length/2 次,这个就跟没优化之前的冒泡排序一样,此时我们可以加上一个标志位 IsSorted 来判断是否已经没有交换了,如果没有,提前退出循环。

 /// <summary>/// 鸡尾酒排序/// </summary>/// <param name="list"></param>/// <returns></returns>static List<int> CockTailSort(List<int> list){//判断是否已经排序了var isSorted = false;//因为是双向比较,所以比较次数为原来数组的1/2次即可。for (int i = 1; i <= list.Count / 2; i++){//从前到后的排序 (升序)for (int m = i - 1; m <= list.Count - i; m++){//如果前面大于后面,则进行交换if (m + 1 < list.Count && list[m] > list[m + 1]){var temp = list[m];list[m] = list[m + 1];list[m + 1] = temp;isSorted = true;}}Console.WriteLine("正向排序 => {0}", string.Join(",", list));//从后到前的排序(降序)for (int n = list.Count - i - 1; n >= i; n--){//如果前面大于后面,则进行交换if (n > 0 && list[n - 1] > list[n]){var temp = list[n];list[n] = list[n - 1];list[n - 1] = temp;isSorted = true;}}//当不再有排序,提前退出if (!isSorted)break;Console.WriteLine("反向排序 => {0}", string.Join(",", list));}return list;}

相关文章:

基于C#实现鸡尾酒排序(双向冒泡排序)

通俗易懂点的话&#xff0c;就叫“双向冒泡排序”。 冒泡是一个单向的从小到大或者从大到小的交换排序&#xff0c;而鸡尾酒排序是双向的&#xff0c;从一端进行从小到大排序&#xff0c;从另一端进行从大到小排序。 从图中可以看到&#xff0c;第一次正向比较&#xff0c;我们…...

CentOS添加开机启动

1.编写项目启动脚本&#xff08;run.sh&#xff09; #!/bin/bash-切换到程序所在路径 cd /home/cavs_install/app/cavs-admin/target/ # 等待其他组件启动完毕后再启动本项目&#xff08;如果不需要等待&#xff0c;本步骤可省略&#xff09; sleep 300 # 实际启动命令 nohup …...

SpringCloudAlibaba之Nacos的持久化和高可用——详细讲解

目录 一、Nacos持久化 1.持久化说明 2.安装mysql数据库5.6.5以上版本(略) 3.修改配置文件 二、nacos高可用 1.集群说明 2.nacos集群架构图 2.集群搭建注意事项 3.集群规划 4.搭建nacos集群 5.安装Nginx 6.配置nginx conf配置文件 7.启动nginx进行测试即可 一、Nacos持久…...

vue3安装eslint和prettier,最简单的步骤

第1步&#xff1a; 安装eslint yarn add eslint -D 第2步&#xff1a; 在根文件夹中&#xff0c;创建.eslintrc.js文件 第3步&#xff1a; 在package.json文件中新增命令 "lint": "eslint --fix --ext .ts,.tsx,.vue src --quiet","prettier"…...

Day32| Leetcode 122. 买卖股票的最佳时机 II Leetcode 55. 跳跃游戏 Leetcode 45. 跳跃游戏 II

Leetcode 122. 买卖股票的最佳时机 II 题目链接 122 买卖股票的最佳时机 II 本题目设计的还是比较巧妙的&#xff0c;把最终的利润分为每天的利润就解决了&#xff08;贪心&#xff09;&#xff0c;每天的利润就是前一天买进&#xff0c;后一天卖出&#xff0c;转化到代码上就…...

95.STL-遍历算法 for_each

算法概述: 算法主要是由头文件 <algorithm> <functional> <numeric> 组成。 <algorithm> 是所有STL头文件中最大的一个&#xff0c;范围涉及到比较、 交换、查找、遍历操作、复制、修改等等 <numeric> 体积很小&#xff0c;只包括几个在序列上面…...

Python基础语法之学习type()函数

Python基础语法之学习type函数 一、代码二、效果 查看数据类型或者说查看变量存储的数据类型 一、代码 print(type("文本")) print(type(666)) print(type(3.14))二、效果 梦想是生活的指南针&#xff0c;坚持追逐梦想&#xff0c;终将抵达成功的彼岸。不要害怕失败…...

filebeat报错dropping too large message of size

filebeat报错&#xff1a; dropping too large message of size 1714620. 原因&#xff1a; kafka对每一条消息的大小进行了限制。 解决 kafka端 修改config/server.properties&#xff0c;添加以下配置 max_message_bytes10000000 replica.fetch.max.bytes10000000修改…...

【C++】类型转换 ④ ( 子类 和 父类 之间的类型转换 - 动态类型转换 dynamic_cast )

文章目录 一、子类 和 父类 之间的类型转换 - 动态类型转换 dynamic_cast1、构造父类和子类2、子类 和 父类 之间的类型转换 - 隐式类型转换3、子类 和 父类 之间的类型转换 - 静态类型转换 static_cast4、子类 和 父类 之间的类型转换 - 重新解释类型转换 reinterpret_cast5、…...

在CentOS 7.9上搭建高性能的FastDFS+Nginx文件服务器集群并实现外部远程访问

文章目录 引言第一部分&#xff1a;FastDFS介绍与安装1.1 FastDFS简介1.2 FastDFS安装1.2.1 安装Tracker Server1.2.2 安装Storage Server 1.3 FastDFS配置1.3.1 配置Tracker Server1.3.2 配置Storage Server1.3.3 启动FastDFS服务 第二部分&#xff1a;Nginx配置2.1 Nginx安装…...

YOLOv8独家原创改进: AKConv(可改变核卷积),即插即用的卷积,效果秒杀DSConv | 2023年11月最新发表

💡💡💡本文全网首发独家改进:可改变核卷积(AKConv),赋予卷积核任意数量的参数和任意采样形状,为网络开销和性能之间的权衡提供更丰富的选择,解决具有固定样本形状和正方形的卷积核不能很好地适应不断变化的目标的问题点,效果秒殺DSConv 1)AKConv替代标准卷积进行…...

Docker pause/unpause命令

docker pause &#xff1a;暂停容器中所有的进程。 docker unpause &#xff1a;恢复容器中所有的进程。 语法 docker pause CONTAINER [CONTAINER...]docker unpause CONTAINER [CONTAINER...]实例 暂停数据库容器db01提供服务。 docker pause db01恢复数据库容器db01提供…...

PostgreSQL create or replace view和重建视图 有什么区别?

一、 replace vs 重建 遇到开发提了个问题&#xff0c;create or replace view和重建视图&#xff08;dropcreate&#xff09;有什么区别&#xff0c;查询资料整理了一下。 1. create or replace 当存在同名视图时&#xff0c;尝试将其替换新视图语句必须与现有视图查询具有相…...

Selenium 连接到现有的 Firefox 示例

当前环境&#xff1a; python 3.7 selenium 3.14.1 urllib3 1.26.8 Frefox 115.1.0esr(32位) geckodriver.exe 0.33.0 1 下载 Firefox 浏览器&#xff0c;根据自己的需要选择。 下载 Firefox 浏览器&#xff0c;这里有简体中文及其他 90 多种语言版本…...

小程序如何进行版本回退

当商家决定回退小程序版本时&#xff0c;可能是因为新版本出现了一些问题或者不符合预期&#xff0c;需要恢复到之前的稳定版本。下面具体介绍怎么回退小程序的版本。 在小程序管理员后台->版本设置处&#xff0c;点击版本回退。确认后&#xff0c;小程序会回退到上一次的版…...

15:00面试,15:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

大数据-之LibrA数据库系统告警处理(ALM-37008 MPPDB服务不可用)

告警解释 告警模块每30秒周期性检测MPPDB服务健康状态&#xff0c;当检测到MPPDB健康状态为“故障”时产生告警。 当检测到MPPDB健康状态为“良好”时告警恢复。 告警属性 告警ID 告警级别 可自动清除 37008 致命 是 告警参数 参数名称 参数含义 ServiceName 产生…...

Pytorch-gpu环境篇

最最最头疼的就是配环境了 包之间的版本匹配问题 INSTALLING PREVIOUS VERSIONS OF PYTORCH 要考虑到pytorch和torchvision之间的匹配关系 显卡版本匹配问题...

互联网上门洗鞋店小程序

上门洗鞋店小程序门店版是基于原平台版进行增强的&#xff0c;结合洗鞋行业的线下实际运营经验和需求&#xff0c;专为洗鞋人和洗鞋店打造的高效、实用、有价值的管理软件系统。 它能够帮助洗鞋人建立自己的私域流量&#xff0c;实现会员用户管理&#xff0c;实现用户与商家的点…...

【深度学习笔记】04 概率论基础

04 概率论基础 概率论公理联合概率条件概率贝叶斯定理边际化独立性期望和方差模拟投掷骰子的概率随投掷次数增加的变化 概率论公理 概率&#xff08;probability&#xff09;可以被认为是将集合映射到真实值的函数。 在给定的样本空间 S \mathcal{S} S中&#xff0c;事件 A \m…...

如何构建ElasticJob监控大盘:关键指标与业务监控融合实践指南

如何构建ElasticJob监控大盘&#xff1a;关键指标与业务监控融合实践指南 【免费下载链接】shardingsphere-elasticjob Distributed scheduled job 项目地址: https://gitcode.com/gh_mirrors/shar/shardingsphere-elasticjob ElasticJob作为一款分布式调度任务框架&…...

全文交给降AI工具处理,文本质量会变差吗?实测说话

全文交给降AI工具处理&#xff0c;文本质量会变差吗&#xff1f;实测说话 “全文交给工具处理&#xff0c;会不会被改得乱七八糟&#xff1f;” 这是很多同学在考虑用降AI工具时最大的顾虑&#xff0c;也是一个合理的问题。 我实测了几个工具处理前后的文本质量对比&#xf…...

PP-DocLayoutV3实战教程:解决OCR漏检/错序问题的布局预处理方案

PP-DocLayoutV3实战教程&#xff1a;解决OCR漏检/错序问题的布局预处理方案 1. 引言&#xff1a;为什么需要专业的文档布局分析&#xff1f; 你有没有遇到过这样的情况&#xff1a;用OCR工具识别扫描文档时&#xff0c;文字顺序乱七八糟&#xff0c;标题被误认为正文&#xf…...

HarmonyOS 6实战:HarmonyOS轻量化交互的两种方案改造与实践(上)

HarmonyOS 6实战&#xff1a;HarmonyOS轻量化交互的两种姿势&#xff08;上篇&#xff09;一、服务卡片&#xff1a;AI助手实现常驻系统页服务卡片改造实战踩坑记录二、实况窗&#xff1a;更新位置与进程服务&#xff08;mock版&#xff09;生命周期管理踩坑记录总结我们之前做…...

从特征多项式到行列式:揭秘矩阵特征值之积的几何意义

1. 特征多项式&#xff1a;打开矩阵奥秘的钥匙 我第一次接触特征多项式时&#xff0c;完全被这个抽象的概念搞晕了。直到有一天&#xff0c;我的导师用了一个简单的比喻&#xff1a;"特征多项式就像是矩阵的DNA检测报告&#xff0c;它能告诉我们这个矩阵最本质的特性。&qu…...

游戏角色建模新革命:用Face3D.ai Pro快速生成高精度3D人脸资产

游戏角色建模新革命&#xff1a;用Face3D.ai Pro快速生成高精度3D人脸资产 1. 从一张照片到游戏角色&#xff0c;到底有多远&#xff1f; 想象一下这个场景&#xff1a;你是一位游戏美术师&#xff0c;刚刚拿到策划发来的角色设定图。图上是一位面容坚毅的东方武士&#xff0…...

Matplotlib横坐标刻度从原点开始的3种实用方法

1. 为什么横坐标刻度从原点开始很重要 做数据可视化时&#xff0c;我们经常需要展示数据从零开始的变化趋势。比如展示销售额增长、用户数量变化或者实验数据对比时&#xff0c;如果横坐标不从零开始&#xff0c;很容易造成视觉上的误导。我见过不少新手做的图表&#xff0c;因…...

LinkSwift:基于JavaScript的网盘直链解析工具技术解析与应用指南

LinkSwift&#xff1a;基于JavaScript的网盘直链解析工具技术解析与应用指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云…...

BiliTools AI视频总结:让B站学习效率提升300%的智能解决方案

BiliTools AI视频总结&#xff1a;让B站学习效率提升300%的智能解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …...

多维创新打造强泛化智能体模型,LongCat-Flash-Thinking-2601技术报告

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...