4-2 Python面试常考算法

一、算法常考点

排序+查找,重中之重

1.常考排序算法:冒泡排序、快速排序、归并排序、堆排序
2.线性查找、二分查找等
3.能独立实现代码(手写),能够分析时间空间复杂度

二、常用排序算法时空复杂度
排序算法 最差时间分析 平均时间复杂度 稳定性 空间复杂度
冒泡排序 O(n^2) O(n^2) 稳定 O(1)
选择排序 O(n^2) O(n^2) 不稳定 `O(1)
插入排序 O(n^2) O(n^2) 稳定 `O(1)
快速排序 O(n^2) O(n*log2n) 不稳定 O(log2n)~O(n)
堆排序 O(n*log2n) O(n*log2n) 不稳定 O(1)
三、排序算法中的稳定性

什么是排序算法的稳定性?
1.相同大小的元素在排序之后依然保持相对位置不变,就是稳定的
2.r[i] = r[j]r[i]r[j]之前,排序之后 r[i] 依然在 r[j] 之前
3.稳定性对于排序一个复杂结构,并且需要保持原有排序才有意义

四、请写出快速排序

快排经常问:分治法(divide and conquer)快排分三步走
1.Partition:选择基准分割数组为两个子数组,小于基准和大于基准的
2.对两个子数组分别快排
3.合并结果

代码示例:

def quick_sort(arr):
	# 递归出口,空数组或者只有一个元素的数组都是有序的
	if len(array) < 2:
		return array
	else:
		pivot_index = 0  # 第一个元素作为 pivot(主元)
		pivot = array[pivot_index]
		less_part = [
			i for i in array[pivot_index+1:] if i <= pivot
		]
		great_part = [
			i for i in array[pivot_index+1:] if i > pivot
		]
		return quick_sort(less_part) + [pivot] + quick_sort<
  • 31
    点赞
  • 139
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值