zoukankan      html  css  js  c++  java
  • python算法-冒泡排序

    核心算法:

    在数组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大的数字

    代码示例如下:

    s=[4,3,1,9,10,6,2,7,5,8] 
    for i in range(len(s)-1):
    for j in range(len(s)-1-i):
    if s[j]>s[j+1]:
    s[j],s[j+1]=s[j+1],s[j]
    print(s)

    代码思路:
    # 第一次循环结果:[3, 1, 4, 9, 6, 2, 7, 5, 8, 10],找到最大的数字
    # 第二次循环结果:[1, 3, 4, 6, 2, 7, 5, 8, 9, 10],找到第二大的数字
    # 第三次循环结果:[1, 3, 4, 2, 6, 5, 7, 8, 9, 10],找到第三大的数字
    # 第四次循环结果:[1, 3, 2, 4, 5, 6, 7, 8, 9, 10],找到第四大的数字
    # 第五次循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],找到第五大的数字
    # 第六次循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],找到第六大的数字
    # 第七次循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],找到第七大的数字
    # 第八次循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],找到第八大的数字
    # 第九次循环结果:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],找到最小的数字
    从以上解析过程可以看到,在循环第5次后列表数字已排好序

     
  • 相关阅读:
    java.lang.NoSuchMethodError: org.springframework.web.context.request.ServletRequestAttributes.<init>
    eclipse web项目实际工程路径对应
    java中专业术语详解
    Maven详解
    工作常用
    html页面布局
    jQuery易混淆概念的区别
    Jquery Datagrid
    Jquery EasyUI 动态添加标签页(Tabs)
    sql语句的写法
  • 原文地址:https://www.cnblogs.com/ssj0723/p/9516472.html
Copyright © 2011-2022 走看看