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

Posted 木仔科技Guava

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C/C++基础之冒泡排序相关的知识,希望对你有一定的参考价值。


排序算法作为编程语言中最基础的算法,在很多高级语言中系统都封装了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++基础之冒泡排序的主要内容,如果未能解决你的问题,请参考以下文章

算法基础之冒泡排序

基础排序算法之冒泡排序

重温基础算法内部排序之冒泡排序法

java基础之冒泡排序

图解算法系列之冒泡排序(Low版)

Java基础之冒泡排序