文档章节

[C语言] 交换排序之冒泡排序的特性及实现

o
 osc_1ee7cxmx
发布于 2018/08/06 20:37
字数 477
阅读 0
收藏 0

精选30+云产品,助力企业轻松上云!>>>

[C语言] 交换排序之冒泡排序的特性及实现

 

1、算法特性

  冒泡排序是一种简单、稳定的交换排序方法,属于最为基础的排序方法之一。

  其时间复杂度最好情况为O(n)、最差与平均情况为O(n²),空间复杂度为O(1)。

 

2、算法思路

  以升序排序为例,比较两个相邻的数,当后者大于前者时,二者交换;当后者小于等于前者时,继续检索。每交换一轮都能将未排序序列中的最大值交换至未排序序列尾,成为已排序序列头。同时每一轮交换结束后下一轮比较次数-1,当比较次数为0时排序完成。

 

 

3、实现代码

 1 #include <stdio.h>
 2 #include <stdbool.h>
 3 
 4 // 冒泡排序:相邻两个元素进行比较,把大的放后面小的放前面,一轮完整的比较之后,最大值放在末尾
 5 void bubble_sort(int arr[],int len)
 6 {
 7     // 第i次冒泡,把当前最大值放到arr[len-i]
 8     for(int i= 0; i<len; i++)
 9     {    
10         bool flag = false;
11         for(int j=1; j<len-i; j++)
12         {
13             if(arr[j] < arr[j-1])
14             {
15                 int tmp = arr[j];
16                 arr[j] = arr[j-1];
17                 arr[j-1] = tmp;
18                 flag = true; // 表示该次完整的循环有交换位置
19             }
20         }
21         // 所有的相邻元素都已经有序,代表整个数组有序,不需要再进行排序
22         if(flag == false)
23         {
24             break;    
25         }
26     }
27 }
28 
29 void travel(int arr[],int len)
30 {
31     for(int i=0;i<len;i++)
32     {
33         printf("%d ",arr[i]);    
34     }    
35     printf("\n");
36 }
37 
38 int main()
39 {
40     int arr[] = {53,82,9,233,43,14,55,9,4,67};
41     int len = sizeof(arr)/sizeof(arr[0]);
42 
43     travel(arr,len);
44     bubble_sort(arr,len);
45     travel(arr,len);
46 
47 /*    travel(arr,len);
48     quick_sort(arr,len);
49     travel(arr,len);*/
50 
51     return 0;
52 }

 

4、测试结果

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

SpringCloud- 第六篇 Hystrix参数配置(三)

1:概述 Hystrix使用Archaius作为配置属性的默认实现。官方配置文档: https://github.com/Netflix/Hystrix/wiki/Configuration 每个属性有四个优先级,依次增大: 1:代码的全局默认值 2:动...

osc_7z601p6x
28分钟前
5
0
SpringBoot2 整合JTA组件,多数据源事务管理

本文源码:GitHub·点这里 || GitEE·点这里 一、JTA组件简介 1、JTA基本概念 JTA即Java-Transaction-API,JTA允许应用程序执行分布式事务处理,即在两个或多个网络计算机资源上访问并且更新...

osc_sju4uxml
29分钟前
11
0
Springboot + Vue + shiro 实现前后端分离、权限控制

本文总结自实习中对项目的重构。原先项目采用Springboot+freemarker模版,开发过程中觉得前端逻辑写的实在恶心,后端Controller层还必须返回Freemarker模版的ModelAndView,逐渐有了前后端分...

osc_lbt7zo1x
31分钟前
19
0
docker-compose部署配置jenkins

docker-compose部署配置jenkins 一、docker-compose文件 version: '3.1'services: jenkins: image: jenkins/jenkins:lts volumes: - /data/jenkins/:/var/jenkins_home ......

osc_4p2c0ecc
33分钟前
22
0
第五周

1、查找/etc目录下大于1M且类型为普通文件的所有文件 2、打包/etc/目录下面所有conf结尾的文件,压缩包名称为当天的时间,并拷贝到/usr/local/src目录备份。 3、利用sed 取出ifconfig命令中本...

osc_hxm151is
34分钟前
20
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部