part1:冒泡排序
冒泡排序的核心:一步一步交换相邻位置的数据!
代码示例
- for 循环实现。
def bubble_sort1(arr): # 交换的细节 def swap(i,j): arr[i],arr[j]=arr[j],arr[i] n =len(arr) # 一步一步比较 for i in range(n): for j in range(n-i): # 定义交换规则,顺序 if j+1arr[j+1]: # 交换相邻位置 swap(j,j+1)
- while 循环实现。
def bubble_sort2(array): def swap(i,j): array[i],array[j]=array[j],array[i] n=len(array) swapped = True # 相邻位置是否交换 while swapped: # pass swapped =False for i in range(1,n): if array[i-1] >array[i]: swap(i-1,i) swapped =True
part2:选择排序
核心思想:可以将一个原始列表划分成有序和无序两部分,每次从无序部分挑选出最值加入有序部分的一侧,直到该列表完全有序。
代码示例
def selection_sort(arr): n = len(arr) for i in range(n-1): smallNdx =i # find small value for j in range(i+1,n): if arr[j]
part3:插入排序
在学习插入排序的时候,你可以将它与选择排序作对比。选择排序是在无序部分中挑选出最值加入有序部分的一测;插入排序是在无序部分的一侧挑选出值,插入到有序部分的合适位置。这样一比较,是不是清晰了很多?
代码示例
def insertion_sort(arr): n =len(arr) for i in range(1,n): value = arr[i] pos =i # find insert position while pos>0 and value