python 算法代码笔试题
时间: 2025-03-04 15:56:16 浏览: 8
Python 算法编程笔试题目
题目一:实现快速排序算法
快速排序是一种基于分治策略的高效排序方法。该算法通过选择一个基准元素,将数组分为两部分,一部分小于基准值,另一部分大于等于基准值,再递归地对这两部分进行相同的操作。
def quick_sort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
middle = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + middle + quick_sort(right)
print(quick_sort([3,6,8,10,1,2,1])) # 输出: [1, 1, 2, 3, 6, 8, 10]
此代码实现了经典的快速排序逻辑[^1]。
题目二:查找最大子序列和
给定一个整数列表 nums
,找出其中连续的一个子数组(至少包含一个数字),使得其具有最大的和并返回这个最大和。
def max_subarray(nums):
current_sum = nums[0]
best_sum = nums[0]
for num in nums[1:]:
current_sum = max(num, current_sum + num)
best_sum = max(best_sum, current_sum)
return best_sum
print(max_subarray([-2,1,-3,4,-1,2,1,-5,4])) # 输出: 6 (即子数组 [4,-1,2,1])
这段代码利用了动态规划的思想来解决问题[^2]。
题目三:计算斐波那契数列第n项
编写函数fib(n),输入非负整数 n 并输出斐波那契数列中的第 n 项。
def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return a
print(fib(9)) # 输出: 34
上述代码采用迭代方式有效减少了重复计算次数。
题目四:判断回文字符串
定义一个函数is_palindrome(s),接收参数s作为待检测的字符串,如果它是回文串则返回True,否则False。
def is_palindrome(s):
s = ''.join(filter(str.isalnum, str.lower(s)))
return s == s[::-1]
print(is_palindrome("A man, a plan, a canal: Panama")) # 输出: True
这里使用了Python内置特性简化了字符处理过程。
阅读全文
相关推荐


















