zoukankan      html  css  js  c++  java
  • 简单易懂的冒泡排序

    这次介绍的是最简单的冒泡排序.......好了废话不多说先看下面

    #先定义一个变量,假设我们要排列下面列表中的元素的顺序

    i= [10,4,7,2,1,9,6]

    #先分析一下

    首先先弄懂冒泡排序,两两相比,第一位比第二位大的话,就相互换位置,.....依次类推,直到最后排完的顺序应该是[1,2,4,6,7,9,10]

    先假设第一位和第二位相比较

    这边可以用i[0] 跟i[1] ,根据索引获取值,这边都不用多说了哈

    第一次:i[0]   跟    i[1]

    第二次:i[1]  跟     i[2]

    第i次:i[len(i)-2]  跟 i[len(i)-1]    这边是最后第二位和最后第一位相比较

    好了,弄懂以上的逻辑,下面开始写代码吧

    #定义一个变量
    j = 0 while j < len(i)-1: #控制循环,先弄懂整个循环结束的时候,需要比较多少次 if i[j]>i[j+1]: #如果第一位大于第二位的话,执行以下代码 i[j],i[j+1] = i[j+1],i[j] #互换位置 j+=1 #每次循环+1 print(i)

      是不是很简单?你以为这就完事了?错了这只是把最大的那个数循环完了,可以打印看看,现在最大的那个10是不是已经到最后面了?

    好了下面开始进一步操作,现在知道上面的代码全部执行完会把最大的那个数放到最后,那现在知道该如何操作了吧?

    很简单就是再套个外循环就可以了,那外循环该循环多少次呢?可以根据列表的长度减1来操作就可以了,下面开始操作

    i= [10,4,7,2,1,9,6]
    a = 0
    while a < len(i) - 1:  #控制外层循环
    # 定义一个变量
    	j = 0
    	while j < len(i) - 1:  # 控制内层循环
    
    		if i[j] > i[j + 1]:  # 如果第一位大于第二位的话,执行以下代码
    
    			i[j], i[j + 1] = i[j + 1], i[j]  # 互换位置
    		j += 1  # 每次循环+1
    	a+=1
    print(i)
    

      

    是不是很简单? 其实内部还有很多优化的地方,上面的列表实际其实比较了36次,然而假如我换一个列表呢?

    比如列表[1,2,3,8,7,5,4],其实有很多次比较都可以省略的,这样会优化了不少,不然要是用上面的代码,还是一样每次都要比较这么多次数的。

    如何优化呢?下次再更新优化后的哈

  • 相关阅读:
    如何保证消息不被重复消费?
    接口幂等性实现
    JVM 线上故障排查基本操作
    对于Arraylist 的一些疑问
    递归思想与递归编程
    linux配置javaJDK
    python数据分析-pandas常用方法
    python 数据分析-pandas数据结构
    python数据分析-numpy 矩阵操作
    python数据分析-numpy数组操作
  • 原文地址:https://www.cnblogs.com/weiweivip666/p/12907856.html
Copyright © 2011-2022 走看看