Python版算法专题-1、冒泡排序

1、冒泡排序

核心算法:

在数组x[n]中,从第一个数开始,拿x[i]和后面的数x[i+1]进行比较,如果x[i]比后面的大,就交换两个数的位置,这样遍历一遍数组后,把最大的数据排在了最后面,之后继续循环排剩下的n-1个数,直到完成所有的排序,由于每次都是把最大的排到最后面,就好像冒泡一样,故取名冒泡排序。

def bubbleSort(x):

   xLen = len(x)

   for i in xrange(xLen-1):

       for j in xrange(xLen -1-i):

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

                t = x[j]

                x[j] = x[j+1]

                x[j+1] = t

   return x

if __name__ == '__main__':

    #冒泡排序演示

   print bubbleSort([34,123,12,34,545])

 

时间复杂度计算:

时间复杂度计算:

当我们遍历第1遍时,比较了n-1次,把最大的数排在了x[n-1]的位置;

第2遍比较了n-2次,把第二大的数排在了x[n-2]的位置;

...

第n-1遍比较了1次,把倒数第二大的数排在了x[1]的位置。

这样,我们总共比较的次数是1+2+3+...+(n-1)= n(n-1)/2

在计算时间复杂度时,我们一般使用的大表示法,其时间复杂度,从小到大的排序是:

(1)<(logn)<(n)<(nlogn)<(n^2)<...<(2^n)<(n!)

我们上面所求得的n(n-1)/2,其时间复杂度,最大的影响因子是n^2,故其时间复杂度是(n^2)

posted @ 2019-03-04 17:42  蘑菇慢慢  阅读(115)  评论(0)    收藏  举报