冒泡排序说明与C++实现

冒泡排序是最基本的算法, 那究竟什么是冒泡排序呢?

冒泡排序 Bubble Sort

1.什么是排序

排序就是将一组数据按照特定规则(如升序或降序)重新排列的过程。这样更加便于我们对数据加工和处理。说人话, 排序就是把无序的数据变得更有规律.

2.为什么叫冒泡排序

想象一下, 家里在用锅烧水, 水的度数越来越高, 沸腾时, 一个个的泡泡冒了出来了. 在计算机中也是一个道理,要让 最大的数次大的数一个一个的冒出来.

冒泡排序就是在两个相邻的数据中比较并交换数据的位置来实现有规律的排序的.

3.在计算机中如何实现冒泡排序

(1)理清思路

如下图, 将 8, 6, 11, 7 进行冒泡排序

第一步:8 > 6       交换

第一步:8 < 11     不交换

第一步:11 > 7       交换

我们可以发现第一轮冒泡后得到 6, 8, 7, 11.           6 < 8, 8 >  7, 7 <11

所以一轮冒泡并不可以直接结束. 但我们可以保证的是, 将现有最大的数移到了最后面。这个最大的数就是泡泡,让这个泡泡冒到最后。

第1次冒泡 将第1大的数移好了

第2次冒泡 将第2大的数移好了

第3次冒泡 将第3大的数移了

第n-1次冒泡 将第n-1大 (倒数第二大) 的数移好了

再到第n次时, 只剩下一个数了, 所以不用冒泡. 由此得出冒泡的边界值是 0 ~ n - 1.

(2)实现代码(n个数排序)

#include<iostream>
#include<cmath>
using namespace std;
int main() 
{    
    int a[505]; //用来存储需要进行冒泡的数据
    int n; //代表数据的个数
    cin>>n; //输入n
    for(int i = 0; i <= n - 1; i++) //循环输入需要冒泡的数据
    {
    	cin>>a[i];
    }
    for(int i = n; i >= 2; i--)
    {
    	for(int j = 0; j < i - 1; j++)
    	{
    		if(a[j] > a[j+1]) //如果该数大于后数
    		{
    			swap(a[j],a[j+1]); //交换两数的位置
    		}
    	}
    }
    for(int i = 0; i < n; i++) //循环输出冒泡完的数据
    {
    	cout<<a[i];
    }	
    return 0; //结束
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值