C#实现冒泡排序

一、算法原理

 

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

二、算法分析

 

平均时间复杂度:冒泡排序最好为O(n) ,最坏为O(n²),平均时间复杂度为O(n²)

空间复杂度:O(1)  (用于交换)

 

三、算法稳定性

 

冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。

 

四、冒泡排序有两个很明显的优势

1.“编程复杂度”很低,很容易写出代码;

2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。  

五、C#冒泡排序算法

 
C# 代码   复制
//冒泡排序
void BubbleSort(int array[],int n)
{int i=0; int j=0; int temp=0;int flag = 0;for(i=0;i<n - 1 ;i++)   /*外循环控制排序的总趟数*/
{flag = 0;   /*本趟排序开始前,交换标志应为假*/for(j=n-1;j > i;j--) /*内循环控制一趟排序的进行*/ 
{ if(array[j] < array[j-1] ) /*相邻元素进行比较,若逆序就交换*/ { temp =array[j]; array[j] = array[j-1]; array[j-1] = temp; flag = 1; /*发生了交换,故将交换标志置为真*/ } } if (flag == 0) /*本趟排序未发生交换,提前终止算法*/ break; /* printf("第%d趟排序结果: \\n",i+1); PrintArray(array,n); */ } } 

 

算法的应用

 
C# 代码   复制
//打印数组
void PrintArray(int  array[] , int n)
{int i;for(i=0;i<n;i++)printf(" %d ",array[i]);printf("\\n");
}void TestBubbleSort()
{int array[8] ={38,20,46,38,74,91,12,25};BubbleSort(array,8);PrintArray(array,8);
}

 

输出形式

 

第1趟   第2趟  第3趟   第4趟   第5趟   第6趟   第7趟

12      12      12      12      12      12      12                             

38      20      20      20      20      20      20

20      38      25      25      25      25      25

46      25      38      38      38      38      38

38      46      38      38      38      38      38

74      38      46      46      46      46      46

91      74      74      74      74      74      74

25      91      91      91      91      91      91  

转载于:https://www.cnblogs.com/gc2013/p/4059330.html

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

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

相关文章

PHP - 使用 Pear 进行安装和卸载包

安装&#xff1a; 首先运行到php根目录&#xff1a; 输入要安装的包文件名&#xff1a; 使用语法&#xff1a; pear install 要安装包的名称 回车确认&#xff1a; 如果没有其他意外&#xff0c;显示安装成功。查看安装的包的信息&#xff1a; 语句&#xff1a; pear info 包的…

CYQ.Data 轻量数据层之路 V2.0 震撼惊世 支持多数据库/内置Aop(二十五)

所有文章索引&#xff1a;CYQ.Data 轻量数据层之路 框架开源系列 索引 前言&#xff1a; 从V1.5发布到现在时隔20天了&#xff0c;终于发布2.0版本了&#xff0c;2.0系列版本由于引入多数据库支持&#xff0c;内部结构改动较大。 但是外面调用方式仍保持一致向下兼容&#xff0…

matlab 捕食者和猎物,MATLAB - 追求曲线(捕食者/猎物)

在我的工程课上&#xff0c;我们编写了一个“非平凡的”捕食者/猎物追捕问题。以下是情况的要点&#xff1a;有一个猎物试图逃脱捕食者。每个都可以建模为可以在MATLAB中制作动画的粒子(我们必须使用这种编码语言)。猎物&#xff1a;可以比捕食者更容易操纵(转弯)捕食者&#x…

SQL Server 2012安装图解

方法/步骤 在资源管理器中双击SQL Server 2012的安装光盘&#xff0c;此时会出现一个安装窗口&#xff0c;在左侧的界面中点击“安装”选项卡&#xff0c;如图所示。然后点击右边的第一项“全新SQL Server 独立安装...”选项。 点击“下一步”按钮继续下一步安装。耐心等待片刻…

C#中读写INI文件

INI文件就是扩展名为“ini”的文件。在Windows系统中&#xff0c;INI文件是很多&#xff0c;最重要的就是“System.ini”、“System32.ini”和“Win.ini”。该文件主要存放用户所做的选择以及系统的各种参数。用户可以通过修改INI文件&#xff0c;来改变应用程序和系统的很多配…

html5响应式设置meta

1 <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <!--放大页面到设备合适的分辨率--> 若不支持&#xff0c;请使用兼容ie的js 1 <!--[if lt IE 9]> 2 <script src"http://css3-mediaqueries-js.goo…

jmap在ubuntu上DebuggerException: Can't attach to the process

解决&#xff1a; 临时&#xff1a; 1.echo 0 >/proc/sys/kernel/yama/ptrace_scope 永久&#xff1a; 2.修改 /etc/sysctl.d/10-ptrace.conf&#xff0c;设置kernel.yama.ptrace_scope0 参考&#xff1a;http://bugs.java.com/bugdatabase/view_bug.do?bug_id7050524转载于…

C/C++中对链表操作的理解实例分析

链表概述   链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量&#xff0c;以head表示&#xff0c;它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”&#xff0c;每个结点都应包括…

idea写java spark程序,Spark : 在IDEA中用scala编写Spark的WordCount程序并提交运行

使用IDEA新建maven工程&#xff0c;添加相关依赖&#xff1a;1.81.82.11.112.3.02.7.7utf-8org.scala-langscala-library${scala.version}org.apache.sparkspark-core_2.11${spark.version}org.apache.hadoophadoop-client2.7.7给项目添加scala支持&#xff0c;新建Scala Objec…

Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)

题目列表&#xff1a; 2146 Problem A【手速】阔绰的Dim2147 Problem B【手速】颓废的Dim2148 Problem C【手速】我的滑板鞋2149 Problem D【手速】潦倒的Dim2150 Problem E【手速】被NTR的Dim2146 Problem A&#xff1a; 简单的最长回文串统计算法&#xff0c;这里没有过高要求…

利用Vagrant and VirtualBox搭建core os环境

利用Vagrant and VirtualBox搭建core os环境 系统环境 ubuntu 14.04 x64vagrant 1.7.4virtualbox 4.3.10git 1.9.1# 安装 virtualbox, git sudo apt-get install virtualbox, git# 软件中心的vagrant版本太低,因此去官网获取最新的软件包地址 wget https://releases.hashicorp.…

php关注 取消关注事件,微信公众平台开发关注/取消关注事件例子

用户在关注与取消关注公众号时&#xff0c;微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑下面是一个微信公众平台关注和取消关注的实例:responseMsg();} else {$wechatObj->valid();}class wechatCallbackapiTest {public function…

DFS应用——遍历有向图+判断有向图是否有圈

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 源代码均为原创&#xff0c; 旨在 理解 “DFS应用——遍历有向图判断有向图是否有圈” 的idea 并用源代码加以实现 &#xff1b;0.2&#xff09; 判断有向图是否有圈的rule—— 一个有向图是无圈图当且…

AbleCloud智能行业解决方案助力体重秤企业向“中国智造”转变

近年来&#xff0c;体重秤消费群体的年龄层次与需求逐渐向多元化发展&#xff0c;品牌众多、竞争激烈的传统体重秤行业迎来了前所未有的挑战——智能体重秤成为行业发展的大趋势&#xff0c;功能单一、同质化严重已经成为阻碍传统体重秤企业成长的桎梏&#xff0c;打造出具备“…

javaScript事件(一)事件流

一、事件 事件是文档或者浏览器窗口中发生的&#xff0c;特定的交互瞬间。 事件是用户或浏览器自身执行的某种动作&#xff0c;如click,load和mouseover都是事件的名字。 事件是javaScript和DOM之间交互的桥梁。 你若触发&#xff0c;我便执行——事件发生&#xff0c;调用它的…

php输入对话框,如何使用JavaScript实现输入对话框

我们有时在网页上进行注册用户信息时会出现弹窗进行提示&#xff0c;你需要输入内容进行确认&#xff0c;那么&#xff0c;这样的输入对话框是怎么实现的呢&#xff1f;本篇文章就来介绍关于使用JavaScript实现输入对话框的方法。我们可以使用prompt显示输入对话框要在JavaScri…

软件缺陷的种类划分

按照软件缺陷的产生原因&#xff0c;可以将其划分为不同的缺陷类别&#xff1a; 1、功能不正常 简单地说就是所应提供的功能&#xff0c;在使用上并不符合产品设计规格说明书中规定的要求&#xff0c;或是根本无法使用。这个错误常常会发生在测试过程的初期和中期&#xff0c;有…

python——no module named XX

加PYTHONPATH吧&#xff0c;新建一个系统环境变量&#xff0c;把你的目录复制进去即可转载于:https://www.cnblogs.com/MarsMercury/p/4992629.html

CodeVS 1081 线段树练习 2

1081 线段树练习 2 时间限制: 1 s空间限制: 128000 KB题目等级 : 大师 Master题目描述 Description给你N个数&#xff0c;有两种操作 1&#xff1a;给区间[a,b]的所有数都增加X 2&#xff1a;询问第i个数是什么&#xff1f; 输入描述 Input Description第一行一个正整数n&#…

bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集

bzoj4144 [AMPPZ2014]Petrol 图论 最短路 并查集 1、这道题我们主要就是要求出距离一个油站的最近的油站 首先我们dijkstra 求出任意一个点到 离他最近的油站的距离 2、然后会发现 如果一条边的两个端点 的最近油站不同的话 那么这条边就会在这两个油站的最短路上 3、然后对于…