python冒泡排序

冒泡排序原理:

冒泡排序就是遍历数据,每次只与下一个数字比较,如果这两个数顺序不对,则与交换过来。

就上面那个问题来说,因为要升序排列,所以数字越大越排在后面。则两个数比较的时候,如果后一个数比当前数小,则顺序不对,要将这两个数交换。遍历的过程如下图:

第一次比较第一和第二个数字,9与2相比较,9比2大,顺序不对,则交换位置。

第二次比较第二与第三个数字,因为9换到了第二位,则9与8比较,9大,顺序不对,则交换位置。

以此类推,最后9就像泡泡一样升到了最后一位,我们称这样为一趟,这一趟里面有多次比较。

 

由于一趟只归为一个数,则如果有n个数字,则需要进行n-1趟。

因为归位后的数字不用再比较了,所以每趟只需要比较n-1-i次(i为已执行的趟数)。

由上可以得出冒泡排序的关键步骤是两个循环:

复制代码
1 for(i = 0; i < n-1; i++){
2   for(j = 0; j < n-1-i; j++)
3     if(a[j] > a[j+1]){
4       temp = a[j];
5       a[j] = a[j+1];
6       a[j+1] = temp;
7     }
8 } 
复制代码

python实现:

根据上述思路,用python实现也是把关键地方实现即可:

a= [3,5,7,9,2,4,6,0]
for i in range(len(a)-1):
for j in range(len(a)-1-i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
print(a)
posted @ 2019-04-18 15:59  autotest_man  阅读(168)  评论(0编辑  收藏  举报