1 / 9
文档名称:

AI笔试面试题库-Python题目解析4.doc

格式:doc   大小:106KB   页数:9页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

AI笔试面试题库-Python题目解析4.doc

上传人:小雄 2021/11/12 文件大小:106 KB

下载得到文件列表

AI笔试面试题库-Python题目解析4.doc

相关文档

文档介绍

文档介绍:1、请用Python手写实现插入排序。
解析:
插入排序(insertion Sort)的工作原理是通过构建有序序列,对于未排序数据, 在已排序序列中从后向前扫描,找到相应位置并插入。
算法执行步骤:
(1) 从第一个元素开始,该元素可以认为已经被排序;
(2) 取出下一个元素,在已经排序的元素序列中从后向前扫描;
(3) 如果被扫描的元素(已排序)大于新元素,则将被扫描元素后移一位;
(4) 重复步骤(3),直到找到已排序的元素小于或者等于新元素的位置;
(5) 将新元素插入到该位置后;
(6) 重复步骤(2)-(5)。
6 5 3 1 8 7 2 4
Python实现
def insert_sort(ary):
n = len (ary)
for i in range(1,n):
if ary[i] < ary[i-1]:
temp = ary[i]
#待插入的下标
index = i
#从i-l循环到0 (包括0)
for j in range(i-1,-1,-1):
if ary[j] > temp :
ary[j+1] = ary[j]
#记录待插入下标
index = j
else :
break
ary[index] = temp
return ary
2、请用Python手写实现快速排序。
解析:
步骤:
从数列中挑出一个元素,称为 ''基准〃 (pivot);
重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值
大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基
准就处于数列的中间位置。这个称为分区(partition)操作;
递归地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。
换言之
快速排序时基于分治模式处理的,
对一个典型子数组A[p. . ,r]排序的分治过程为三个步骤:
分解:
A [p . . r ]被划分为俩个(可能空)的子数组A[p . . q-1 ]和A[q+1 ..r],使得
A[p . .q-1 ] <= A[q] <= A[q+1 . .r];
解决:通过递归调用快速排序,对子数组A[p . .q-1]和A[q+1 ..r]排序;
合并。
QUICKSORT(A, p, r)
if p < r
then q 一 PARTITION (A, p, r) //关键
QUICKSORT(A, p, q-1)
QUICKSORT(A, q+1, r)
数组划分
快速排序算法的关键是PARTITION过程,它对A[p. .r]进行就地重排:
PARTITION(A, p, r)
x - A [r]
i p - 1
for j p to r - 1
do i f A [ j ] x
then i i + 1
exchange A[i] <-> A[j]
7 exchange A[i + 1] <-> A[r] 8 return i
下图是一个例了
3 1 8 7 2 4
这是另外一个可视化图
Python实现
def quick_sort(ary):
return qsort(ary,0,len(ary) -1)