冒泡排序

写在前面:

csdn网站用了也挺久,一直都是在上面找资源,看的都是大家写的博客。

临近毕业,上网刷题发现自己不懂的东西很多,需要学习的东西也很多,打算利用这个机会也来写写自己的博客,当作是学习过程中的一份笔记本。


冒泡排序在刷题的时候看到过很多次,也用到了很多次,但总是不能完全熟练的运用。就用第一篇博客,记录一下这个经典的排序算法。

一、冒泡排序的基本概念

冒泡排序,是一种相邻元素比较,并交换元素位置的算法。

比较分为两种:

  • i>i+1(该位置元素大于后面的一个元素),两个元素交换位置。最终的结果是从小到大排列。
  • i<i+1(该位置元素小于后面的一个元素),两个元素交换位置。最终的结果是从大到小排列。

根据实际情况取从小到大排列还是从大到小排列

二、实现过程

假设有k个元素

1.从第一个元素开始,将其和第二个元素进行比较,如果符合比较的条件,交换位置

2.将第二个元素和第三个元素比较,如果符合比较的条件,交换位置

3.重复该过程,直到比较完倒数第二个(k-1)和倒数第一个元素(k),那么第一次排序结束,最小值或者最大值将会放到末尾。

经过第一次排序后,结果可能并不是所期待的,那么就进行第二次排序。

对于第二次排序,因为最后一个元素已经是确定的结果(最大的元素或者最小的元素),那么此时只需要比较到(k-1)-1和k-1这两个元素即可

同理,第三次排序而已,最后两个元素已经是确定的结果,只需要比较到(k-2)-1和k-2即可

后面几次排序都是如此。但是最多需要k-1次排序。

例子:

图片来源(https://blog.csdn.net/guoweimelon/article/details/50902597

三、代码实现(c++)

  1. void bubble_sort(int arr[], int len) {
    	
    	for (int i = 0; i < len - 1; i++){     //外循环用来代表第几次排序
    		for (j = 0; j < len - 1 - i; j++){ //内循环用来第几次排序的具体实施
                        if (arr[j] > arr[j + 1]){
                            int temp;
                            temp=arr[j];
                            arr[j]=arr[j+1];
                            arr[j+1]=temp; }
                   }
               }
    }

     

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值