Python算法面试题

常见的几种排序算法

1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
选择排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
冒泡排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
插入排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
选择排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
希尔排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
归并排序
1
2
3
4
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
快速排序

最常考察的排序方法,同样使用到了分治的思想。
快速排序的思想是从数组中选取一个值作为基值,以基值为分界点将整个数组划分为两个子数组。
在基值前面的数组都比基值小,后面的都比基值大。然后再递归的对子数组使用相同的划分。
实际中基值的选择通常选择第一个数,为了防止最坏的情况发生(即倒序),可以在排序之前将数组进行打乱。

1
2
3
4
5
6
7
8
9
10
#python快速排序
def sortArray(self, nums):
if len(nums) <= 1:
return nums
left = 0
right = len(nums)-1
pivot = nums[0]

while left

堆排序

堆排序用构建大顶堆(小顶堆)的方法,先将数组构从底向上建成一个堆。然后每次将堆顶的元素与尾部元素交换。这样尾部的元素就是最大值了。再将剩下的元素从头开始交换,推出第一个顶堆,以此迭代

1
#python堆排序