冒泡算法 python
『凌乱』 2019-10-29 11:09:15 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)
----------------------
在纸上快速写出来上述算法的你超过了90%的测试人!加油!
剩下10%的测试人会强迫自己把各种排序,队列,堆栈算法都自行写了出来。