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

基于C#实现奇偶排序

这篇就从简单一点的一个“奇偶排序”说起吧,不过这个排序还是蛮有意思的,严格来说复杂度是 O(N2),不过在多核的情况下,可以做到 N2 /(m/2)的效率,这里的 m 就是待排序的个数,当 m=100,复杂度为 N2 /50,还行把,比冒泡要好点,因为重点是解决问题的奇思妙想。
下面我们看看这个算法是怎么描述的,既然是奇偶,肯定跟位数有关了

  1. 先将待排序数组的所有奇数位与自己身后相邻的偶数位相比较,如果前者大于后者,则进行交换,直到这一趟结束。
  2. 然后将偶数位与自己身后相邻的奇数位相比较,如果前者大于后者,则进行交换,直到这一趟结束。
  3. 重复 1,2 的步骤,直到发现无“奇偶”,“偶奇” 交换的时候,就认为排序完毕,此时退出循环。
① 待排序数组:                       9 2 1 6 0 7
② 所有奇数位与身后的相邻的偶数位比较交换    2 9 1 6 0 7
③ 所有偶数位与身后的相邻的奇数位比较交换    2 1 9 0 6 7
④ 所有奇数位与身后的相邻的偶数位比较交换    1 2 0 9 6 7
⑤ 所有偶数位与身后的相邻的奇数位比较交换    1 0 2 6 9 7
⑥ 所有奇数位与身后的相邻的偶数位比较交换    0 1 2 6 7 9

我们可以看到,经过 5 趟排序后,我们的数组就排序完毕了,从图中 ② 可以看到,如果每个线程分摊一个奇数位,那交换是不是只要一次就够了呢,可以看到这个算法在多核处理下面还是很有优势的。
最后的运行代码:

 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>() { 9, 2, 1, 6, 0, 7 };Console.WriteLine("\n排序前 => " + string.Join(",", list));list = OddEvenSort(list);Console.WriteLine("\n排序后 => " + string.Join(",", list));Console.Read();}static List<int> OddEvenSort(List<int> list){var isSorted = false;//如果还没有排序完,就需要继续排序,知道没有交换为止while (!isSorted){//先默认已经排序完了isSorted = true;//先进行 奇数位 排序for (int i = 0; i < list.Count; i = i + 2){//如果 前者 大于 后者,则需要进行交换操作,也要防止边界if (i + 1 < list.Count && list[i] > list[i + 1]){var temp = list[i];list[i] = list[i + 1];list[i + 1] = temp;//说明存在过排序,还没有排序完isSorted = false;}}//再进行 奇数位 排序for (int i = 1; i < list.Count; i = i + 2){//如果 前者 大于 后者,则需要进行交换操作,也要防止边界if (i + 1 < list.Count && list[i] > list[i + 1]){var temp = list[i];list[i] = list[i + 1];list[i + 1] = temp;//说明存在过排序,还没有排序完isSorted = false;}}}return list;}}}

image.png

相关文章:

基于C#实现奇偶排序

这篇就从简单一点的一个“奇偶排序”说起吧&#xff0c;不过这个排序还是蛮有意思的&#xff0c;严格来说复杂度是 O(N2)&#xff0c;不过在多核的情况下&#xff0c;可以做到 N2 /(m/2)的效率&#xff0c;这里的 m 就是待排序的个数&#xff0c;当 m100&#xff0c;复杂度为 N…...

Kibana部署

服务器 安装软件主机名IP地址系统版本配置KibanaElk10.3.145.14centos7.5.18042核4G软件版本&#xff1a;nginx-1.14.2、kibana-7.13.2-linux-x86_64.tar.gz 1. 安装配置Kibana &#xff08;1&#xff09;安装 [rootelk ~]# tar zxf kibana-7.13.2-linux-x86_64.tar.gz -C…...

【Linux】了解进程的基础知识

进程 1. 进程的概念1.1 进程的理解1.2 Linux下的进程1.3 查看进程属性1.4 getpid和getppid 2. 创建进程3. 进程状态4. 进程优先级5. 进程切换6. 环境变量7. 本地变量与内建命令 1. 进程的概念 一个已经加载到内存中的程序&#xff0c;叫做进程&#xff08;也叫任务&#xff09…...

ES6 — ES14 新特性

一、ES6 新特性&#xff08;2015&#xff09; 1. let和const 在ES6中&#xff0c;新增了let和const关键字&#xff0c;其中 let 主要用来声明变量&#xff0c;而 const 通常用来声明常量。let、const相对于var关键字有以下特点&#xff1a; 特性varletconst变量提升✔️全局…...

附录12-time.h的常用方法

目录 1 数据类型 1.1 time_t 1.2 tm 1.3 clock_t 2 相关知识 3 获取从1970年1月1日以来的UTC秒数 time() 4 获取本时区时间字符串 ctime() 5 获取GMT时间的tm gmttime() 6 获取本地时间的tm localtime() 7 记录当前毫秒数 clock() 8 将表示本地时间的tm转…...

C语言公交车之谜(ZZULIOJ1232:公交车之谜)

题目描述 听说郑州紫荆山公园有英语口语角&#xff0c;还有很多外国人呢。为了和老外对上几句&#xff0c;这周六早晨birdfly拉上同伴早早的就坐上了72路公交从学校向紫荆山进发。一路上没事干&#xff0c;birdfly开始思考一个问题。 从学校到紫荆山公园共有n(1<n<20)站路…...

Liunx Ubuntu Server 安装配置 Docker

1. 安装Docker 1.1 更新软件包列表 sudo apt update1.2 添加Docker存储库 sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-a…...

Oracle ORA12514 监听程序当前无法识别连接描述符中请求的服务

最简单的有可能是你的服务还没有开启&#xff0c;需要启动服务&#xff01;&#xff01;&#xff01;&#xff01; 在连接数据库的时候&#xff0c;有时会遇到一个“ORA12514&#xff1a;监听程序当前无法识别连接描述符中请求的服务”的错误&#xff0c;这个错误其实就是数据…...

druid keepAlive 导致数据库连接数飙升

一.背景 应用在执行完某个复杂业务&#xff0c;主要包含20几个查询SQL的操作后&#xff0c;会导致数据库连接池一直升高 druid版本&#xff1a;1.2.11 druid配置文件&#xff1a; spring.datasource.druid.maxActive100 spring.datasource.druid.initialSize20 spring.datas…...

四川竹哲电子商务有限公司深耕抖音电商服务领域

随着数字经济的飞速发展&#xff0c;抖音电商服务成为了越来越多企业的首选。在这个充满机遇与挑战的时代&#xff0c;四川竹哲电子商务有限公司以其卓越的实力和专业的服务&#xff0c;成为了抖音电商服务领域的佼佼者。 一、深耕抖音电商服务领域 作为一家专注于抖音电商服务…...

爬虫中XPath语法四个重要概念及示例

一、根节点与非根节点 1、/div :选择div节点&#xff0c;只有当它是文档的根节点时。 2、//div&#xff1a;选择文档中所有的div节点&#xff08;包括非根节点&#xff09;。 二、通过属性选择节点 1、//href&#xff1a;选择带href属性的所有节点。 2、//a[hrefhttp://ba…...

MySQL-03-索引

索引是提高MySQL查询性能的一个重要途径&#xff0c;但过多的索引可能会导致过高的磁盘使用率以及过高的内存占用&#xff0c;从而影响应用程序的整体性能。应当尽量避免事后才想起添加索引&#xff0c;因为事后可能需要监控大量的SQL才能定位到问题所在&#xff0c;而且添加索…...

CSS-长度单位篇

px&#xff1a;像素em&#xff1a;相对元素font-size的倍数rem&#xff1a;相对根字体大小&#xff0c;html标签就是根%&#xff1a;相对父元素计算 注意&#xff1a;CSS中设置长度&#xff0c;必须加单位&#xff0c;否则样式无效&#xff01;...

自己动手实现一个深度学习算法——七、卷积神经网络

文章目录 1.整体结构2.卷积层1&#xff09;全连接层存在的问题2&#xff09;卷积运算3&#xff09;填充4&#xff09;步幅5&#xff09;3维数据的卷积运算6&#xff09;结合方块思考7&#xff09;批处理 3.池化层1&#xff09;池化层的特征 4.卷积层和池化层的实现1&#xff09…...

office word 使用笔记

office word 使用笔记 1. 功能1.1 格式快捷键1.2 复选框 2 遇到过的问题2.1 表格标题和表格距离过大 1. 功能 1.1 格式快捷键 复制格式&#xff1a;ctrl shift c 粘贴格式&#xff1a;ctrl shift v 1.2 复选框 方框位置和类型&#xff1a;“插入——高级符号——字体”选…...

vue中下载文件后无法打开的坑

今天在项目开发的时候临时要添加个导出功能我就写了一份请求加导出得代码&#xff0c; 代码&#xff1a; //导出按钮放开exportDutySummarizing (dataRangeInfo) {const params {departmentName: dataRangeInfo.name,departmentQode: dataRangeInfo.qode}//拼接所需得urlcons…...

【追求卓越04】数据结构--栈与队列

引导 今天我们开始学习栈与队列的内容&#xff0c;我觉得栈并不难&#xff0c;所以篇幅也就不会那么多了。在虚拟空间中&#xff0c;栈是用户空间中的一种数据结构&#xff0c;它主要用于保存局部变量。那么问题来了&#xff0c;为什么用栈来保存局部变量&#xff0c;不用别的数…...

基于SpringBoot的超市信息管理系

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背景介绍&#xff1a; 随着我国经济的不断发…...

【计算机组成原理】存储系统

&#x1f384;欢迎来到边境矢梦的csdn博文&#x1f384; &#x1f384;本文主要梳理计算机组成原理中 存储系统的知识点和值得注意的地方 &#x1f384; &#x1f308;我是边境矢梦&#xff0c;一个正在为秋招和算法竞赛做准备的学生&#x1f308; &#x1f386;喜欢的朋友可以…...

基于SSM的旅游管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

抖音直播间弹幕实时采集完整指南:快速搭建专业级数据监控系统

抖音直播间弹幕实时采集完整指南&#xff1a;快速搭建专业级数据监控系统 【免费下载链接】DouyinLiveWebFetcher 抖音直播间网页版的弹幕数据抓取&#xff08;2025最新版本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/do/DouyinLiveWebFetcher 想要在5分钟…...

Open NSynth Super故障排除:常见问题与解决方案

Open NSynth Super故障排除&#xff1a;常见问题与解决方案 【免费下载链接】open-nsynth-super Open NSynth Super is an experimental physical interface for the NSynth algorithm 项目地址: https://gitcode.com/gh_mirrors/op/open-nsynth-super Open NSynth Supe…...

Noto字体:全球多语言字体解决方案的全面实战指南

Noto字体&#xff1a;全球多语言字体解决方案的全面实战指南 【免费下载链接】noto-fonts Noto fonts, except for CJK and emoji 项目地址: https://gitcode.com/gh_mirrors/no/noto-fonts 在数字时代&#xff0c;文字显示问题常常困扰着全球用户。当系统无法正确渲染…...

Kirikiri游戏开发终极指南:5个技巧让你轻松处理视觉小说资源

Kirikiri游戏开发终极指南&#xff1a;5个技巧让你轻松处理视觉小说资源 【免费下载链接】KirikiriTools Tools for the Kirikiri visual novel engine 项目地址: https://gitcode.com/gh_mirrors/ki/KirikiriTools 如果你正在处理Kirikiri引擎的视觉小说游戏资源&#…...

ST7032 LCD驱动库深度解析:I²C字符屏嵌入式开发全指南

1. LCD_ST7032 库深度解析&#xff1a;面向嵌入式工程师的 ST7032 IC 液晶驱动全栈指南ST7032 是一款由 Sitronix&#xff08;矽创电子&#xff09;推出的低功耗、宽温域、高对比度字符型 LCD 控制器&#xff0c;广泛应用于工业人机界面、仪器仪表、智能家居节点及电池供电设备…...

当孩子注意力不足时,如何有效帮助他们克服多动症?

多动症诊断标准与ADHD症状的全面解析 多动症&#xff0c;医学上称为注意力缺陷多动障碍&#xff08;ADHD&#xff09;&#xff0c;其诊断标准以行为表现为基础。主要的ADHD症状包括注意力不足、易分心、激动不安和冲动行为等。根据国际通用的《精神障碍诊断与统计手册》第五版&…...

PyInstaller打包YOLO目标检测exe,文件体积太大?试试这几个优化技巧

PyInstaller打包YOLO目标检测exe的7个极致瘦身方案 当你兴奋地用PyInstaller打包完YOLO目标检测项目&#xff0c;却发现生成的.exe文件像个臃肿的巨人——动辄500MB起步&#xff0c;甚至轻松突破1GB。这种"肥胖症"不仅让程序启动缓慢&#xff0c;更让分发变得困难。本…...

Youtu-VL-4B-Instruct开源模型优势:MIT许可证商用友好,支持二次训练与私有数据微调

Youtu-VL-4B-Instruct开源模型优势&#xff1a;MIT许可证商用友好&#xff0c;支持二次训练与私有数据微调 你是不是也遇到过这样的烦恼&#xff1f;想找一个能看懂图片、又能跟你聊天的AI模型&#xff0c;结果发现要么是闭源的&#xff0c;用起来束手束脚&#xff1b;要么是开…...

三星990 evo plus 这个产品厉害吗

三星 990 EVO Plus 是一款定位精准、技术很有特点的“次旗舰”级 PCIe 4.0 固态硬盘。 它不属于追求极致性能的 990 PRO 系列&#xff0c;而是面向主流用户群体。它的“厉害”之处不在于绝对的跑分&#xff0c;而在于它在性能、能效、温控和价格之间找到了一个很好的平衡点&am…...

Mac鼠标滚轮方向反了?3分钟教你用MOS实现Win式滚动(附避坑指南)

Mac鼠标滚轮方向反向&#xff1f;3种专业方案实现Win式滚动逻辑 刚切换到Mac的Windows用户常会遇到一个令人抓狂的问题——鼠标滚轮方向完全反了。在Windows中向下滚动滚轮时页面会向下移动&#xff0c;而Mac却让页面向上升。这种反直觉的操作方式源于苹果"自然滚动"…...