冒泡排序C语言代码 时间复杂度
思想: 从前往后两两比较相邻元素的值,若前一个大则交换。
代码:
/*冒泡排序*/#include<stdio.h>void BubbleSort(int a[], int n){int i,j,temp;int flag;for(i=0;i<n-1;i++){flag=0; //没发生交换的标志 for(j=0;j<n-1-i;j++){ //从最前面到n-1-i个是没排序的元素 if(a[j]>a[j+1]){ //如果前面的比后面的大则交换 temp=a[j+1];a[j+1]=a[j];a[j]=temp;flag=1; //发生交换置1 }}if(flag==0){ //若本趟操作没有发生交换则整个序列已有序,直接结束循环 break;}}
}int main(void){int a[9]={56,24,98,77,13,36,43,65,81};BubbleSort(a,9);for(int i=0;i<9;i++){printf("%d ",a[i]);}return 0;
}
空间复杂度: 常数个辅助单元,O(1)
时间复杂度:
最好(有序):比较n-1次,交换0次,O(n)
最坏(完全逆序):比较(n-1)+(n-2)+…+1= n(n-1)/2次,交换n(n-1)/2次 O(n²)
总体来说O(n²)
稳定性: 只有当逆序时才会交换,相等不会交换,稳定
适用情况: 也适用于链表
遇到的问题:
1.若在一趟操作中没有发生交换,则整体已经有序,可以提前结束比较。
2.冒泡排序所产生的有序子序列一定是全局有序,每趟都会将一个元素放在它的最终位置上
冒泡排序C语言代码 时间复杂度相关推荐
- 冒泡排序 C语言代码
冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. ...
- 数据结构—冒泡排序 C语言代码实现(从前向后/从后向前两种)
冒泡排序的思想就是交换,假设要使序列排为递增 如果从左到右比较,则如果左边的比较大就交换, 如果从右向左比较,则右边的比较小就交换. //冒泡排序-从左到右交换 void Bubblesort(int ...
- 指针冒泡排序c语言代码,用指针编写冒泡排序方法
满意答案 ha141988 2013.05.26 采纳率:44% 等级:13 已帮助:10095人 需要修改三个地方:(确保程序正常运行) 1.scanf("%d",*ptr ...
- C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?
struct node *sort(struct node *head)/*排序*/ { struct node *p,*q; struct node *temp; for(p=head;p!=NUL ...
- c语言选择冒泡排序,c语言选择冒泡排序讲解(附代码)
c语言选择冒泡排序讲解(附代码) c语言选择冒泡排序讲解(附代码) 冒泡排序原理举例: 给定一组数 15 20 1 16 进行从大到小冒泡排序.第一次起泡的第一次比较:用15和20比较,若15比20小 ...
- c 语言从大到小排序算法,10 大经典排序算法(动图演示+ C 语言代码)
原标题:10 大经典排序算法(动图演示+ C 语言代码) 来源:C语言与CPP编程 以前也零零碎碎发过一些排序算法,但排版都不太好,又重新整理一次,排序算法是数据结构的重要部分,系统地学习很有必要. ...
- 超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示)
超详细八大排序+基数排序(图文并茂+动图演示+C语言代码演示) 插入排序-直接插入排序 插入排序-希尔排序 选择排序-直接选择排序 选择排序-堆排序 交换排序-冒泡排序 交换排序-快速排序-三种方法( ...
- 快速排序c语言实现,快速排序的C语言代码实现
快速排序实质上是对"冒泡排序"的一种改进,整个排序过程可概括为:通过N趟的排序将原本的排序数据分为若干块进行分块排序,而在每趟排序过程中,以指定的关键字将待排数据分别分为比关键字大 ...
- 构建线性表的c语言代码,数据结构严蔚敏C语言版—线性表顺序存储结构(顺序表)C语言实现相关代码...
1.运行环境 这里说明一下这里所有的C语言代码都是基于code::blocks 20.03编译运行的.当然一些其他集成开发环境应该也是可以的,个人不太喜欢功能太过强大的IDE,因为那同样意味着相关设置 ...
- 数据结构与算法|马踏棋盘算法(小甲鱼)C语言代码的算法分析
马踏棋盘算法(骑士周游问题)的算法分析 C语言代码部分来自小甲鱼的<数据结构与算法> 文章目录 马踏棋盘算法(骑士周游问题)的算法分析 一.C语言代码实现 二.代码分析与算法思路 题目要求 ...
最新文章
- Django、Flask、Tornado的比较
- About The FTP
- C# 程序执行时间差
- 百度网盘迎来劲敌!非会员下载速度10MB/S……
- 【前端攻略】最全面的水平垂直居中方案与flexbox布局
- P4248 [AHOI2013]差异
- [vue-cli] 说下你了解的vue-cli原理?你可以自己实现个类vue-cli吗?
- 关于EFCore线程内唯一
- 闲话WPF之十八(WPF中的资源 [4] )
- 关于字符集的简单介绍
- linux mysql怎么建数据库用户,Linux MySQL新建用户
- Java线程安全策略
- OpenAI Gym 是一个优秀开发和比较强化学习算法的工具
- 一对多关联关系映射和设置级联属性
- Maya2014/2015/2016/2017/2018/2019安装包及安装教程
- Qtum量子链发布QIP-7:Qtum虚拟机升级,五大更新全面提升开发性能
- CYUSB3014类别
- 苹果ios系统企业级开发者授信下载app时出现:‘此app开发者需要更新’‘出现一朵云app无法打开’有的手机可以打开有的手机无法打开情况解决方案
- 弘辽科技:618年中大决战,拖词拖价法快速玩转淘宝直通车
- Android中的Cursor