Python3 实例(三) | 菜鸟教程(二十一)

目录

一、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

猜你喜欢

转载自blog.csdn.net/wuds_158/article/details/131499559
今日推荐