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
- 怎么对python中列表进行排序(Python列表常见操作详解获取,增加,删除,修改,排序等)
- python对字典值排序(Python实现字典按key或者value进行排序操作示例sorted)
- 织梦cms指定栏目怎么取(织梦CMS后台模板列表按字母排序方法)
- dedecms新字段(DEDECMSv5.6 tags.php标签不能按照时间排序的问题)
- 织梦怎么使用tag标签(织梦dedecms使用weight排序无效的解决方法)
- C#选择排序
- c#中list排序
- python 字典按key值排序(Python 按字典dict的键排序,并取出相应的键值放于list中的实例)
- php排序代码详解(PHP实现数据四舍五入的方法小结4种方法)
- dedecms文章权重排序(Dedecms实现tags云标签随机颜色与字体大小方法详解)
- php脚本通过文件路径批量上传文件(php遍历目录下文件并按修改时间排序操作示例)
- sqlserver修改排序规则几种方法(SQL Server 分页编号的另一种方式推荐)
- dedecms频道封面不能修改内容(dedecms按栏目名首字母/数字排序输出的实现方法)
- pythondict排序原理(Python标准库使用OrderedDict类的实例讲解)
- python排序方法简单(快速排序的四种python实现推荐)
- mysql 自定义排序
- 香蕉(香蕉三种人不宜吃)
- 没钱可以快乐吗(没钱也能快乐吗)
- 快乐是什么(快乐就是)
- 东南亚有哪个国家(东南亚有哪个国家最发达)
- 东南亚安全吗(好不好挣钱)
- 潘长江小品《照亮全家福》台词剧本完整版(潘长江小品照亮全家福台词剧本完整版)
热门推荐
- MongoDB中的索引的操作
- python列表中的数组(Python3.4学习笔记之列表、数组操作示例)
- sqlserver使用简介(SQL Server Page结构深入分析)
- oracle和mysql查询所有表(Oracle、MySQL和SqlServe三种数据库分页查询语句的区别介绍)
- serv-u界面怎么设置中文(Serv-U 550 Permission denied 的解决办法)
- win10安装mysql8.0如何启动(win10下mysql 8.0.23 安装配置方法图文教程)
- php中变量定义规则(php use和include区别总结)
- python开启两个线程(Python开启线程,在函数中开线程的实例)
- asp.net中Session的操作
- python动态数组原理(Python实现的旋转数组功能算法示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9