小学生图解排序算法:①冒泡排序

冒泡排序是一种简单的排序算法,通过相邻元素两两比较并交换来实现排序。文章通过图解详细阐述了冒泡排序的过程,包括算法原理、图解说明、核心代码以及优化版代码。文章还提到了冒泡排序的稳定性,并指出在特定情况下,程序员可以通过不同的实现方式使其变得不稳定。
摘要由CSDN通过智能技术生成

冒泡排序

是一种计算机科学领域的较简单的排序算法。名字由来是因为越大的元素会经典交换慢慢“浮”到数列的顶端,故名。(指从大到小的排序)——某百科的解释


算法原理

对一个给定长度为n的随机无序数组a[],以从小到大排序为例。

  1. 从第1位开始,相邻的2个数字两两互相比大小,如果前者比后者大,则双方交换数值。然后值大者再与后一位比较……通过相邻的数字不断两两比较(后者大则双方交换数值),值大者的下标将一步一步向后移动。
  2. 第一轮循环:数组所有值按步骤1中的方式比对,最终数组中的最大值移动到最末位(a[n-1],数组下标从0开始)。
  3. 第二轮循环:数组前n-1位(a[0]至a[n-2])按步骤1中的方式比对,最终前n-1位中的最大值移动到倒数第2位(a[n-2])。
  4. 第三轮循环:数组前n-2位(a[0]至a[n-3])按步骤1中的方式比对,最终前n-2位中的最大值移动到倒数第3位(a[n-3])。
  5. ……
  6. 第 x 轮循环:数组前n-x+1位(a[0]至a[n-x])按步骤1中的方式比对,最终前n-x+1位中的最大值移动到倒数第x位(a[n-x])。(x<=n-1)
  7. ……
  8. 第n-1轮循环:数组前2位(a[0]至a[1])按步骤1中的方式比对,最终前2位中的最大值移动到第2位(下标1)。此时全部排序完成。

图解过程

算法原理虽然比较简单,但仅通过文字阅读比较空洞和模糊,接下来以图解一个简单数组冒泡排序的过程来进行说明,会形象一些。建议看懂图解后再看后面的代码。

以对给定的无序数组进行从小到大排序为例。

冒泡排序图解

图解说明

  • 从图解过程可以看出,我们对长度为5的数组进行了4次循环,分别用来确定末位a[4]、倒数第二位a[3]、a[2]、正数第二位a[1]位的值(思考:为什么第一位a[0]的值不用通过再一次循环来确定?)。

  • 因此我们猜想对于长度为n的数组,需要n-1次循环来从末向前依次确定每次的最大值(即依次确定a[n-1]/a[n-2]/……/a[2]/a[1]的值)。

  • 用 int类型 i 来表示第几次循环的话,则 i 取值为1至n-1间&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值