冒泡排序 相邻元素两两进行比较,每次比较结束都得到数组中最大的元素 #冒泡排序 def bubblesort(bubbleList): #外层循环,整个数组的长度 flag = True n = len(bubbleList) while(n): #内层循环,相邻两个数之间进行比较 #比如四个数字两两比较只需要3次,所以要减一 for i in range(n-1): #从小到大排序:前一个>后一个,则交换 if bubbleList[i]>bubbleList[i+ 在计算机科学中,排序算法是数据处理的重要组成部分,它们用于对一组数据进行排列,以便于检索、分析或进一步处理。本文将重点介绍三种基础的排序算法:冒泡排序、插入排序和选择排序。 我们来看冒泡排序。冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历数组,比较相邻的两个元素并根据需要交换它们的位置,使得每一次遍历都能将未排序的最大元素“浮”到数组的末尾。具体实现如以下代码所示: ```python def bubblesort(bubbleList): flag = True n = len(bubbleList) while(n): for i in range(n-1): if bubbleList[i] > bubbleList[i+1]: bubbleList[i], bubbleList[i+1] = bubbleList[i+1], bubbleList[i] flag = False if flag: break n -= 1 return bubbleList ``` 冒泡排序的时间复杂度为O(n^2),其中n是数组的长度。虽然效率不高,但其优势在于实现简单且稳定,即相等的元素在排序后不会改变相对顺序。 接下来是插入排序,它从数组的第二个元素开始,将每个元素插入到已排序的序列中,通过与前面的元素进行比较来确定其正确位置。插入排序的Python实现如下: ```python def insertion_sort(Insertion_List): n = len(Insertion_List) for i in range(1, n): key = Insertion_List[i] j = i - 1 while j >= 0 and Insertion_List[j] > key: Insertion_List[j + 1] = Insertion_List[j] j -= 1 Insertion_List[j + 1] = key return Insertion_List ``` 插入排序的时间复杂度也是O(n^2),但它在处理部分有序的数据时效率较高,且同样是一种稳定的排序算法。 最后是选择排序,它通过找到数组中最小(或最大)的元素,将其与第一个未排序的位置交换,然后在剩余元素中重复此过程。选择排序的Python实现如下: ```python def select_sort(select_List): n = len(select_List) for i in range(n): min_num = i for j in range(i+1, n): if select_List[j] < select_List[min_num]: min_num = j select_List[min_num], select_List[i] = select_List[i], select_List[min_num] return select_List ``` 选择排序的时间复杂度同样为O(n^2),但它是不稳定的,即相等的元素可能会改变它们的相对顺序。尽管如此,由于它只需要一个额外的空间用于临时存储,所以空间复杂度为O(1),这在内存有限的情况下是一个优点。 总结起来,冒泡排序、插入排序和选择排序都是基于比较的排序算法,它们在不同的场景下各有优劣。冒泡排序适用于小规模数据或接近有序的数据,插入排序在部分有序的数据上表现优秀,而选择排序则在内存限制的环境中较为适用。然而,在大数据量的排序需求中,这些简单的算法通常会被更高效的排序算法如快速排序、归并排序或堆排序所取代。
- 粉丝: 18
- 资源: 933
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助