Python面经 收藏

冒泡排序与选择排序的比较(Python实现)

2019-10-28  本文已影响0人  Alcazar

通过学习排序算法,发现冒泡排序和选择排序在算法实现上,十分的近似,下面进行必要的一些讲解:

我们先来看看这两个算法的Python实现过程:

def bubble_sort(lis):
    for i in range(len(lis)):            
     # 这个循环负责设置冒泡排序进行的次数    
        for j in range(i+1,len(lis)):     # j为列表下标
            if lis[i] > lis[j]:
                lis[i], lis[j] = lis[j], lis[i]
    return lis
def selection_sort(lis):
  for i in range( len (lis)-1):
    minindex = i
    for j in range(i + 1, len(lis)):
      if lis[j] < lis[minindex]:
        minindex = j
    lis[i], lis[minindex] = lis[minindex], lis[i]
    return lis

原理分析

- 【冒泡排序】

让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。

- 【选择排序】

将一个序列分为两部分,前面是有序序列,后面是无序序列,不断的将后面的无序序列中的最小值添加到前面的有序序列中,直到后面的无序序列中没有值,开始的时候将第一个值作为有序序列。


由于冒泡排序中元素需要两两比较,所以要遍历所有元素,冒牌排序算法,非常适用于寻找列表中最大值或者,最小值

在选择排序中,我们也需要一轮轮的选出剩余的无需元素中的最小值,所以也要一次次的遍历无序列表,非常契合的使用冒泡的思想去选出最小值

【结论】:看这两个算法其实思维不同,但是实现的编码过程十分一致。如果看程序看蒙了,其实也不要紧,思维上能明白两者的区别就行...

上一篇下一篇

猜你喜欢

热点阅读