python实现冒泡排序
一、代码实现
二、实现思路:
使用双重for循环,内层变量为i,外层变量为j。在内层循环中不断的比较相邻的两个值(i, i+1)的大小:如果i的值大于i+1的值,交换两者位置。每循环一次,外层的j增加1,等到j等于n-1的时候,结束循环。
三、详细思路:
(1)内层循环第一次(9个数做比较)
假设列表a = [34,23,5,64,12,8,43,6,53]
len(a)为9,即长度是9
list(in range(0,8)) = [0,1,2,3,4,5,6,7] 循环了8次
从 arr1[0] 到 arr1[7]进入循环体。循环体里面有个+1操作,也就是arr1[0]到arr1[8]进行比较操作
a[0]与a[1] 比较交换取大的为a[1] >第一次循环结束
新a[1]与a[2] 比较交换取大的为a[2] >第二次循环结束
新a[2]与a[3] 比较交换取大的为a[3] >第三次循环结束
新a[3]与a[4] 比较交换取大的为a[4] >第四次循环结束
新a[4]与a[5] 比较交换取大的为a[5] >第五次循环结束
新a[5]与a[6] 比较交换取大的为a[6] >第六次循环结束
新a[6]与a[7] 比较交换取大的为a[7] >第七次循环结束
新a[7]与a[8] 比较交换取大的为a[8] >第八次循环结束
》以上循环结束时,内层大循环循环了一次,作用是:取到最大的数放在了最后一个位置
(2)内层大循环进行多次,就是外层循环的次数是多少
内层大循环第1次 (9个数,比较8次) 》第8个位置
内层大循环第2次 (8个数,比较7次) 》第7个位置
内层大循环第3次 (7个数,比较6次) 》第6个位置
内层大循环第4次 (6个数,比较5次 》第5个位置
内层大循环第5次 (5个数,比较4次) 》第4个位置
内层大循环第6次 (4个数,比较3次) 》第3个位置
内层大循环第7次 (3个数,比较2次) 》第2个位置
内层大循环第8次 (2个数,比较1次) 》第1个位置,第0个位置同时也决定了
(3)2中的推理决定了i 和 j的值