python 排序算法
引入:https://www.cnblogs.com/wuxinyan/p/8615127.html
一、冒泡排序
算法步骤
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素必定会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个到n个(每循环一次,比较出一个最大值,就排除一个不需要再被遍历)。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

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


浙公网安备 33010602011771号