目录
一、Python 二分查找
二、Python 线性查找
三、Python 插入排序
四、Python 快速排序
五、Python 选择排序
六、Python 冒泡排序
七、Python 归并排序
一、Python 二分查找
(一)二分搜索是一种在有序数组中查找某一特定元素的搜索算法。
(二)搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
实例 : 递归
执行以上代码输出结果为:
元素在数组中的索引为 3
二、Python 线性查找
(一)线性查找指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。
执行以上代码输出结果为:
元素在数组中的索引为 3
三、Python 插入排序
(一)插入排序(英语:Insertion Sort)是一种简单直观的排序算法。
(二)它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
执行以上代码输出结果为:
排序后的数组: 5 6 11 12 13
四、Python 快速排序
(一)快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。
(二)步骤为:
- 挑选基准值:从数列中挑出一个元素,称为"基准"(pivot);
- 分割:重新排序数列,所有比基准值小的元素摆放在基准前面,所有比基准值大的元素摆在基准后面(与基准值相等的数可以到任何一边)。在这个分割结束之后,对基准值的排序就已经完成;
- 递归排序子序列:递归地将小于基准值元素的子序列和大于基准值元素的子序列排序。
(三)递归到最底部的判断条件是数列的大小是零或一,此时该数列显然已经有序。
(四)选取基准值有数种具体方法,此选取方法对排序的时间性能有决定性影响。
实例:
执行以上代码输出结果为:
排序后的数组: 1 5 7 8 9 10
五、Python 选择排序
(一)选择排序(Selection sort)是一种简单直观的排序算法。
(二)它的工作原理如下。
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
执行以上代码输出结果为:
排序后的数组: 11 12 22 25 64
六、Python 冒泡排序
(一)冒泡排序(Bubble Sort)也是一种简单直观的排序算法。
(二)它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
执行以上代码输出结果为:
排序后的数组: 11 12 22 25 34 64 90
七、Python 归并排序
(一)归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法。
(二)该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。
(三)分治法:
- 分割:递归地把当前序列平均分割成两半。
- 集成:在保持元素顺序的同时将上一步得到的子序列集成到一起(归并)。
执行以上代码输出结果为:
给定的数组 12 11 13 5 6 7 排序后的数组 5 6 7 11 12 13