- 2
- 0
- 约8.62千字
- 约 25页
- 2026-03-19 发布于福建
- 举报
第PAGE页共NUMPAGES页
2026年程序员面试中常问的算法问题及答案
一、排序算法(共3题,每题10分)
1.题目:
实现快速排序(QuickSort)算法,并说明其时间复杂度和空间复杂度。假设输入数组为`[3,6,8,10,1,2,1]`,请输出排序后的数组。
答案:
快速排序是一种分治算法,通过选取一个“基准”元素,将数组分为两个子数组,其中一个子数组的所有元素均小于基准,另一个子数组的所有元素均大于基准,然后递归地对这两个子数组进行快速排序。
实现思路:
1.选择基准元素(通常选择第一个或最后一个元素)。
2.使用双指针法(left和right)将数组分区,使得left指针左侧所有元素≤基准,right指针右侧所有元素≥基准。
3.递归地对左右子数组进行排序。
代码示例(Python):
python
defquick_sort(arr):
iflen(arr)=1:
returnarr
pivot=arr[0]
left=[xforxinarr[1:]ifx=pivot]
right=[xforxinarr[1:]ifxpivot]
returnquick_sort(left)+[pivot]+quick_sort(right)
测试
arr=
原创力文档

文档评论(0)