1、冒泡排序
核心算法:在数组x[n]中,从第一个数开始,拿x[i]和后面的数x[i+1]进行比较,如果x[i]比后面的大,就交换两个数的位置,这样遍历一遍数组后,把最大的数排在了最后面,之后继续循环排剩下的n-1个数,直到完成所有的排序,由于每次都是把最大的排到最后面,就好像冒泡一样,故取名冒泡排序。
详细讲解:
里层for循环的逻辑:
第一步:从第一个元素开始,与第二个元素比较,如果小于,则交换两个元素的位置,否则不交换位置。
第二步:从第二个元素和第三个元素比较,如果小于,则交换两个元素的位置,否则不交换位置。
类似第一步和第二步的过程,实现第三元素和第四元素比较、第四元素和第五元素比较。。。。。
第N步:倒数第二个元素和最后一个比较。
全部比较之后,整个列表中最大的元素就找到了。
外层for循环的逻辑:
第一步到第N步
然后,重复第一步到N-1步的过程,可以找到第二大的数字
然后,重复第一步到N-2步的过程,可以找到第三大的数字
然后,重复第一步到N-3步的过程,可以找到第四大的数字
。。。。。。。
最后,重复第一步的过程(即:N-(N-2)),找到第N-1大的数字
def bubbleSort(x):
xlen = len(x)
for i in range(xlen - 1):
for j in range(xlen - 1 -i):
if x[j] > x[j+1]:
# t = x[j]
x[j],x[j+1] = x[j+1],x[j]
# x[j+1] = t
return x
if __name__ == '__main__':
print(bubbleSort([1,3,5,6,2]))