搜公众号
推荐 原创 视频 Java开发 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库
Lambda在线 > 木仔科技Guava > C/C++基础之冒泡排序

C/C++基础之冒泡排序

木仔科技Guava 2019-10-10
举报


排序算法作为编程语言中最基础的算法,在很多高级语言中系统都封装了sort方法,并提供自定义比较方法排序。但是,这背后是怎么实现的你真的知道吗?接下来几篇就给大家讲一讲C/C++里面最基础的集中数组排序方法实现吧。

冒泡排序

冒泡排序:顾名思义就是向气泡冒出来一样,谁大谁出来,在数组排序里就是谁大谁往后走。就像当初老师给我们排队的时候一样,按身高将一个最高个从前挨个比一直往后排

假设现在有一个数组{50,26,74,60,12,1,100}冒泡排序算法是怎么做的呢?

前一个跟后一个去比较大小,如果前一个比后一个大,则前面的跟后面的交换位置,再继续往后比,知道数组结束。我们看代码实现:

我们看运行结果:

排序成功。这里需要注意的一点就是第二个循环位置的循环条件for (int j = 0; j < sizeof(arr)/sizeof(int)-1-i; j++)这里一定要注意每比较完一趟后,后面的数已经是最大的了,已经排好了,再进行下一趟的时候我们就不需要再去跟它们比较了。并且由于比较里面已经取了j+1这个下标一定记得在循环条件里减1,不然就会越界

附上原代码:

#include <stdio.h>

#include <iostream>

using namespace std;

int main()

{

int arr[7] = {50,26,74,60,12,1,100};\

//这个循环式控制比较趟数,每趟都需要找出来一个最大的(除了已经排好的)

for (int i = 0; i < sizeof(arr)/sizeof(int)-1; i++)

{

//这个循环就是我在图示中表示的过程,最大的从前往后滚

for (int j = 0; j < sizeof(arr)/sizeof(int)-1-i; j++)

{

if(arr[j]>arr[j+1])

{

int temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp ;

}

}

}

//我们来输出一下看看排序成功没

for (int i = 0; i < sizeof(arr)/sizeof(int); i++)

{

cout<<arr[i]<<" ";

}

system("pause");

return 0 ;

}

版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《C/C++基础之冒泡排序》的版权归原作者「木仔科技Guava」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注木仔科技Guava微信公众号

木仔科技Guava微信公众号:GuavaStudio

木仔科技Guava

手机扫描上方二维码即可关注木仔科技Guava微信公众号

木仔科技Guava最新文章

精品公众号随机推荐

举报