博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法之冒泡排序(C语言实现)
阅读量:4117 次
发布时间:2019-05-25

本文共 1082 字,大约阅读时间需要 3 分钟。

排序思想:

通过循环得到有序列:

 

实现代码如下:

#include
#include
//冒泡排序:让较大的往下沉,较小的数往上冒;//约定按照元素的大小升序排序// 时间复杂度: O(N ^ 2)// 空间复杂度: O(1)// 稳定性: 稳定排序/************************************************************************************1.比较相邻的元素。如果第一个比第二个大,就交换他们两个(从后往前找)。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。************************************************************************************/void swap(int *x, int *y){ int tmp = *x; *x = *y; *y = tmp; return ;}void BubbleSort(int *arr, int size){ if (size <=1){ return; } int bound= 0; // 采用每次循环找到一个最小的数字的方式完成冒泡 // [0, bound) 就是当前的有序区间 // [bound, size) 就是待排序区间 for (bound; bound < size; bound++){ int cur = size - 1; for (cur; cur > bound; cur--){ if (arr[cur] < arr[cur - 1]){ // 此处交换两个元素 swap(&arr[cur], &arr[cur - 1]); } } }}int main(){ int arr[9] = { 49, 38, 65, 97, 76, 13, 27, 43, 12 }; int size = sizeof(arr) / sizeof(arr[0]); BubbleSort(arr, size); int i = 0; for (i = 0; i < size; i++){ printf("%d ", arr[i]); } system("pause"); return 0;}

 

 

你可能感兴趣的文章
laravel控制器与模型名称不统一
查看>>
vue登录拦截
查看>>
npm配置淘宝镜像仓库以及electron镜像
查看>>
linux设置开机自启动脚本的最佳方式
查看>>
VUE SPA 单页面应用 微信oauth网页授权
查看>>
phpstorm 集成 xdebug 进行调试
查看>>
npm和node升级的正确方式
查看>>
laravel事务
查看>>
springcloud 连续请求 500
查看>>
vue复用新增和编辑表单
查看>>
Ubuntu 16.04 apt-get更换为国内阿里云源
查看>>
laravel部署到宝塔步骤
查看>>
小程序获取access_token
查看>>
navicat远程连接mysql数据库
查看>>
tp5令牌数据无效 解决方法
查看>>
自己的网站与UCenter整合(大致流程)
查看>>
laravel 制作通用的curd 后台操作
查看>>
【小红书2017年笔试】求一个数组中平均数最大的子数组
查看>>
Linux基础系列-定时器与时间管理
查看>>
Linux基础系列-可执行程序的产生过程
查看>>