冒泡算法

核心思想:

传入一个数组,程序从前往后比较,如果第一个元素比第二个元素大,则交换位置,否则保持不变.第三个元素比第二个元素大,则和第二个元素交换位置,依此类推.算法复杂度为:n的2次方,n为元素个数.是效率较为低下的一种算法.冒泡算法每次只是相邻元素交换位置.


演示代码:(python)

#-*- coding:utf-8 -*-

#bubble sort
def bubble(t):
    count = len(t)
    if count == 0:
        return t
    for i in xrange(count - 1):
        for j in xrange(count - 1 -i):
            # 进行该循环的目的在于确定当前元素和后面元素比较的次数
            # 第一次比较四个
            # 第二次比较三个
            # ...
            if t[j] > t[j+1]:
                t[j], t[j+1] = t[j+1], t[j]
            
    return t

lists = [2,5,1,8]
print bubble(lists)

# -----------------------------------------------------------------------
# 第一趟排序,是从2开始依次和后面的5,1,8进行比较,根据大小或两两交换,或保持
# 不变,结果为[2, 1, 5, 8],这是5和1交换的结果
# 第二趟排序,是从2开始,依次和后面的5,1进行比较,8被排除在外,即这个泡已经冒
# 到了最顶端,无需参与比较了,结果为[1,2,5,8]
# 第三趟排序,是从1开始,和后面的2比较,5作为泡冒上去了,结果为[1,2,5,8]
# 至此排序结束
# -----------------------------------------------------------------------
posted @ 2012-07-10 23:04  rorshach  阅读(130)  评论(0编辑  收藏  举报