C#冒泡排序
C#冒泡排序
C#冒泡排序一、算法原理
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
二、算法分析
平均时间复杂度:冒泡排序最好为O(n) ,最坏为O(n²),平均时间复杂度为O(n²)
空间复杂度:O(1) (用于交换)
三、算法稳定性
四、冒泡排序有两个很明显的优势
1.“编程复杂度”很低,很容易写出代码;
2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的序列,而堆排序、快速排序均不具有稳定性。
五、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);
*/
}
}
算法的应用
//打印数组
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
- C#选择排序
- 怎么对python中列表进行排序(Python列表常见操作详解获取,增加,删除,修改,排序等)
- python列表反转的方法(Python实现的列表排序、反转操作示例)
- sqlserver修改排序规则几种方法(SQL Server 分页编号的另一种方式推荐)
- dedecms频道封面不能修改内容(dedecms按栏目名首字母/数字排序输出的实现方法)
- javascript 经典算法(JavaScript实现的七种排序算法总结推荐!)
- laravel时间日期字段比较(Laravel find in set排序实例)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- 织梦cms指定栏目怎么取(织梦CMS后台模板列表按字母排序方法)
- python 迭代对象必须实现哪些方法(详解python之heapq模块及排序操作)
- dedecms简短标题(dedecms文章列表实现序列号排序效果实现代码)
- js数组排序有哪些(js将多维数组转为一维数组后去重排序)
- easyUI DataGrid 显示可排序的列
- python排序方法简单(快速排序的四种python实现推荐)
- python对列表排序(Python实现对特定列表进行从小到大排序操作示例)
- python选择排序最大最小同时排序(Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例)
- 律界衣品最好,时尚圈学识数高,41岁的Amal堪称现实版的傲骨贤妻(时尚圈学识数高)
- 刘智泰确认出演《Good Wife》 担纲男一号(刘智泰确认出演Good)
- 《傲骨之战》剧终 律政女魔头Diane,为什么是大女主天花板(傲骨之战剧终律政女魔头Diane)
- 汉族(汉族的祖先是谁)
- 中国有几个名族(中国有几个民族没列入56个民族)
- 数学语文题目(语文的数学题)
热门推荐
- vuekeep-alive源码(vue中keepAlive组件的作用和使用方法详解)
- mysql配置多实例
- 织梦dedecms自定义表单选项必填修改解决方法(织梦dedecms自定义表单选项必填修改解决方法)
- docker显示容器的gc日志(解决docker使用GDB,无法进入断点的问题)
- dedecms操作(织梦DedeCMS官方关于正版版本号的严正声明)
- css sprites介绍
- docker同步宿主机配置(docker容器间跨宿主机通信-基于overlay的实现方法)
- python豆瓣电影爬虫课程设计报告(详解python 模拟豆瓣登录豆瓣6.0)
- html判断canvas已经绘制过了(html2canvas截图空白问题的解决)
- 怎么用html做一个导航栏(html+css 实现简易导航栏功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9