经典算法之冒泡排序

冒泡排序:

冒泡排序:是计算机科学领域里面的一种算法。

这个算法名字的由来是因为在执行算法的时候越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,所以叫做“冒泡排序”。

算法原理:

  1. 每每比较相邻的元素。如果第一个元素比第二个元素大,就交换他们的位置。
  2. 针对所有的元素重复以上的步骤,除了上一轮中确定的最后一个且是最大的元素。
  3. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

对于原理中的第二点补充说明一下为什么要除去最后一个已确定的元素:

    因为在上一轮中或者在第一轮中已经确定的最大的数与下一轮确定出来的最大的数相比较,永远是上一轮中最大的数要大于下一轮的中最大的数的,所以这样子的比较是没有意义的,除去比较已确定的上一轮中最大的数,可以提高执行效率,避免不必要的资源浪费。

执行过程:

下面,给大家举个例子,详细说明一下冒泡排序的比较过程吧!

经典算法之冒泡排序

详细步骤(注:以下代码使用python编写):

  1. 我们将每一轮比较的操作转化为代码,如下:
    经典算法之冒泡排序
  2. 将上述代码转换为循环的形式,如下:
    经典算法之冒泡排序
  3. 找到每次比较之后的临界条件,即控制总比较次数的条件,通过观察我们不难发现,每次比较完了之后,总轮数都会减1,因为每次最后一个数值都不需要比较,代码如下:
    经典算法之冒泡排序
  4. 最外层设定一个循环,用于控制临界条件(轮数):
    经典算法之冒泡排序
    经典算法之冒泡排序

规律总结:

    每轮比较的时候,大的元素往后挪,每比较完一轮之后,总的轮数减1,直到序列中没有任何一对元素需要比较。

以上观点仅为本人的一点理解,不足之处欢迎指正!