python 排序算法

引入:https://www.cnblogs.com/wuxinyan/p/8615127.html


 

一、冒泡排序

  算法步骤

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。

  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素必定会是最大的数。

  3. 针对所有的元素重复以上的步骤,除了最后一个到n个(每循环一次,比较出一个最大值,就排除一个不需要再被遍历)。

  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

 

  

def bubbleSort(arr):

    # 外层循环 指定循环次数
    for i in range(1, len(arr)):

        # 内层循环,比较元素大小
        for j in range(0, len(arr)-i):
            if arr[j] > arr[j+1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]   // 大的值向后移动
    return arr

 

二、 选择排序

  算法步骤:

    1. 外层循环指定循环次数,定义一个变量来记录最小元素的下标:minIndex初始值可默认设置第一个元素的下标 minIndex = 0

    2. 内层循环,从第二个元素开始,与前一个元素比较大小,如果后边的元素值小,则将其下标赋予minIndex,反之则不变

    3. 内层循环结束,即完成一圈遍历后,判断minIndex是否发生改变,如变动,则将其 ‘下标’ 对应的值与初始值(minIndex=0时的值)进行交换

    4. 外层循环继续第二圈, 重复步骤3(此时默认minIndex=1)...一次循环直至结束

  

  

def selectionSort(arr):

    # 外层循环
    for i in range(len(arr) - 1):
        # 记录最小数的索引
        minIndex = i

        # 内层循环
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[minIndex]:
                minIndex = j    // 交换下标

        # i 不是最小数时,将 i 和最小数进行交换
        if i != minIndex:
            arr[i], arr[minIndex] = arr[minIndex], arr[i]
    return arr

 

 

 

posted @ 2021-05-31 11:35  黑无常  阅读(64)  评论(0)    收藏  举报