1.冒泡排序

1.介绍:冒泡排序(BubbleSorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。

2.优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(即在第n-1次排序之前排好序之后就不用再排序了)

3.动图来源:https://www.toutiao.com/a6593273307280179715/?iid=6593273307280179715&wid=1621761486436

冒泡排序

4.代码实现

import random
import time
def sorted(sortlist):
    flag = False
    time = 0
    for i in range(len(sortlist) -1 ):
        time = time + 1 
        for j in range(len(sortlist) -i -1 ):
            if sortlist[j] > sortlist[j+1]:
                flag = True
                temp = sortlist[j+1]
                sortlist[j+1] = sortlist[j]
                sortlist[j] = temp
        if flag == False:                   #这个if-else很精髓,让你可以判断  本次冒泡是否有改动,若有改动就把flag置False,若无改动了说明不需要改动了,则break
            break
        else:
            flag = False
    # print("time = ",time)                   #这是排序第time-1次后才不用再次排序,因此第time次是没有变换位置的
    # for i in range(len(sortlist)):
    #     print(sortlist[i])   
l = []
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
for i in range(80000):
    l.append(int(random.random()*100000000))
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
sorted(l)
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.介绍:插入式排序属于内部排序法,是对于欲排序的元素以插入的方式找寻该元素的适当位置,以达到排序的目的。 2.思...
    Jason_k阅读 2,166评论 0 0
  • 冒泡排序思想 基本思想: 冒泡排序,类似于水中冒泡,较大的数沉下去,较小的数慢慢冒起来(假设从小到大),即为较大的...
    DuBetter阅读 162,809评论 7 49
  • 许久没有写点东西了,答辩之后人也变得松懈。今天看到简书又有人点赞之前记录的冒泡排序[https://www.jia...
    DuBetter阅读 10,589评论 0 5
  • 1.介绍:选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目...
    Jason_k阅读 734评论 0 0
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 12,735评论 28 53