vlambda博客
学习文章列表

数学建模方法之冒泡排序

冒泡排序


了解了数学建模的一般步骤和灰色关联分析法之后,是否对建模有了新的认识?今天小编带大家了解一种新的方法——冒泡排序法       想了解,一定要沉心耐心看完。


数学建模方法之冒泡排序


(1)基本思想


冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。


算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。


(2)运行过程


冒泡排序算法的运作如下:


1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。


2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。


3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。


持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。


数学建模方法之冒泡排序

我们看一个例子,假设有一个数组[5,4,6,7,8]将它从小到大排序


数学建模方法之冒泡排序


第二次循环,把7和所有数字比较,使7往上冒,最终排到倒数第二个位置。

数学建模方法之冒泡排序


这次循环比前面少一次循环比较。


这是因为第一次循环时已经把最大的8排到最上面的位置了,这次排序肯定不会去占用最上面的位置的,所以此时比较次数可以比前面少一次。


第三次6往上冒,同理

数学建模方法之冒泡排序





然后进行第四次循环


数学建模方法之冒泡排序


就实现了从小到大的排序

下面给出一段冒泡排序的实现代码


# coding=utf-8

def bubble_sort(array):

    for i in range(1, len(array)):

        for j in range(0, len(array)-i):

            if array[j] > array[j+1]:

                array[j], array[j+1] = array[j+1], array[j]

    return array



if __name__ == '__main__':

    array = [10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21]

    print(bubble_sort(array))



小编有话说

数学建模方法之冒泡排序


希望大家学有所获!!

不从泥泞不堪的小道上迈步,就踏不上铺满鲜花的大路。

数学建模方法之冒泡排序










新的学期,背好书包
向知识的海洋进军