版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2025年编程基础算法题库及答案一、排序算法1.冒泡排序题目:实现冒泡排序算法,对给定的整数数组进行升序排序。代码实现(Python):```pythondefbubble_sort(arr):n=len(arr)foriinrange(n):forjinrange(0,ni1):ifarr[j]>arr[j+1]:arr[j],arr[j+1]=arr[j+1],arr[j]returnarr测试arr=[64,34,25,12,22,11,90]sorted_arr=bubble_sort(arr)print(sorted_arr)```复杂度分析:时间复杂度:$O(n^2)$,其中$n$是数组的长度。因为有两层嵌套循环。空间复杂度:$O(1)$,只使用了常数级的额外空间。2.选择排序题目:实现选择排序算法,对给定的整数数组进行升序排序。代码实现(Python):```pythondefselection_sort(arr):n=len(arr)foriinrange(n):min_idx=iforjinrange(i+1,n):ifarr[j]<arr[min_idx]:min_idx=jarr[i],arr[min_idx]=arr[min_idx],arr[i]returnarr测试arr=[64,25,12,22,11]sorted_arr=selection_sort(arr)print(sorted_arr)```复杂度分析:时间复杂度:$O(n^2)$,同样有两层嵌套循环。空间复杂度:$O(1)$,只使用了常数级的额外空间。3.插入排序题目:实现插入排序算法,对给定的整数数组进行升序排序。代码实现(Python):```pythondefinsertion_sort(arr):foriinrange(1,len(arr)):key=arr[i]j=i1whilej>=0andkey<arr[j]:arr[j+1]=arr[j]j-=1arr[j+1]=keyreturnarr测试arr=[12,11,13,5,6]sorted_arr=insertion_sort(arr)print(sorted_arr)```复杂度分析:时间复杂度:平均和最坏情况下为$O(n^2)$,最好情况下为$O(n)$(数组已经有序)。空间复杂度:$O(1)$,只使用了常数级的额外空间。4.快速排序题目:实现快速排序算法,对给定的整数数组进行升序排序。代码实现(Python):```pythondefquick_sort(arr):iflen(arr)<=1:returnarrelse:pivot=arr[0]left=[xforxinarr[1:]ifx<=pivot]right=[xforxinarr[1:]ifx>pivot]returnquick_sort(left)+[pivot]+quick_sort(right)测试arr=[3,6,8,10,1,2,1]sorted_arr=quick_sort(arr)print(sorted_arr)```复杂度分析:时间复杂度:平均情况下为$O(nlogn)$,最坏情况下为$O(n^2)$(例如数组已经有序)。空间复杂度:平均情况下为$O(logn)$,最坏情况下为$O(n)$。5.归并排序题目:实现归并排序算法,对给定的整数数组进行升序排序。代码实现(Python):```pythondefmerge_sort(arr):iflen(arr)<=1:returnarrmid=len(arr)//2left=merge_sort(arr[:mid])right=merge_sort(arr[mid:])returnmerge(left,right)defmerge(left,right):result=[]i=j=0whilei<len(left)andj<len(right):ifleft[i]<right[j]:result.append(left[i])i+=1else:result.append(right[j])j+=1result.extend(left[i:])result.extend(right[j:])returnresult测试arr=[38,27,43,3,9,82,10]sorted_arr=merge_sort(arr)print(sorted_arr)```复杂度分析:时间复杂度:$O(nlogn)$,无论数组初始状态如何。空间复杂度:$O(n)$,主要用于合并过程中的临时数组。二、搜索算法1.线性搜索题目:实现线性搜索算法,在给定的整数数组中查找目标值的索引,如果未找到则返回-1。代码实现(Python):```pythondeflinear_search(arr,target):foriinrange(len(arr)):ifarr[i]==target:returnireturn-1测试arr=[10,20,80,30,60,50,110,100,130,170]target=110index=linear_search(arr,target)print(index)```复杂度分析:时间复杂度:$O(n)$,其中$n$是数组的长度。空间复杂度:$O(1)$,只使用了常数级的额外空间。2.二分搜索题目:实现二分搜索算法,在一个有序的整数数组中查找目标值的索引,如果未找到则返回-1。代码实现(Python):```pythondefbinary_search(arr,target):left,right=0,len(arr)1whileleft<=right:mid=(left+right)//2ifarr[mid]==target:returnmidelifarr[mid]<target:left=mid+1else:right=mid1return-1测试arr=[2,3,4,10,40]target=10index=binary_search(arr,target)print(index)```复杂度分析:时间复杂度:$O(logn)$,每次迭代将搜索范围缩小一半。空间复杂度:$O(1)$,只使用了常数级的额外空间。三、递归算法1.斐波那契数列题目:实现递归函数计算斐波那契数列的第$n$项。代码实现(Python):```pythondeffibonacci(n):ifn<=1:returnnreturnfibonacci(n1)+fibonacci(n2)测试n=10result=fibonacci(n)print(result)```复杂度分析:时间复杂度:$O(2^n)$,因为存在大量的重复计算。空间复杂度:$O(n)$,递归栈的深度为$n$。2.阶乘题目:实现递归函数计算$n$的阶乘。代码实现(Python):```pythondeffactorial(n):ifn==0orn==1:return1returnnfactorial(n1)测试n=5result=factorial(n)print(result)```复杂度分析:时间复杂度:$O(n)$,递归调用$n$次。空间复杂度:$O(n)$,递归栈的深度为$n$。四、图算法1.广度优先搜索(BFS)题目:实现广度优先搜索算法,在一个图中从给定的起始节点开始遍历图。代码实现(Python):```pythonfromcollectionsimportdequedefbfs(graph,start):visited=set()queue=deque([start])visited.add(start)result=[]whilequeue:vertex=queue.popleft()result.append(vertex)forneighboringraph[vertex]:ifneighbornotinvisited:visited.add(neighbor)queue.append(neighbor)returnresult测试graph={'A':['B','C'],'B':['A','D','E'],'C':['A','F'],'D':['B'],'E':['B','F'],'F':['C','E']}start='A'traversal=bfs(graph,start)print(traversal)```复杂度分析:时间复杂度:$O(V+E)$,其中$V$是顶点数,$E$是边数。空间复杂度:$O(V)$,主要用于存储访问标记和队列。2.深度优先搜索(DFS)题目:实现深度优先搜索算法,在一个图中从给定的起始节点开始遍历图。代码实现(Python):```pythondefdfs(graph,start,visited=None):ifvisitedisNone:visited=set()ifstartnotinvisited:print(start,end='')visited.add(start)forneighboringraph[start]:dfs(graph,neighbor,visited)测试graph={'A':['B','C'],'B':['A','D','E'],'C':['A','F'],'D':['B'],'E':['B','F'],'F':['C','E']}start='A'dfs(graph,start)```复杂度分析:时间复杂度:$O(V+E)$,其中$V$是顶点数,$E$是边数。空间复杂度:$O(V)$,主要用于递归栈和访问标记。五、动态规划1.爬楼梯问题题目:假设你正在爬楼梯。需要$n$阶你才能到达楼顶。每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到楼顶呢?代码实现(Python):```pythondefclimb_stairs(n):ifn<=2:returnndp=[0](n+1)dp[1]=1dp[2]=2foriinrange(3,n+1):dp[i]=dp[i1]+dp[i2]returndp[n]测试n=5result=climb_stairs(n)print(result)```复杂度分析:时间复杂度:$O(n)$,只需要遍历一次数组。空间复杂度:$O(n)$,使用了一个长度为$n+1$的数组。2.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学生出省请假申请书
- 提前入驻申请书
- 内河渔船过户申请书范文
- 核酸采样点申请书
- 汇款申请书由谁提交
- 小额诉讼申请书模板
- 贫困生辅助申请书
- 外墙漆翻新申请书范文
- 2025年健身服务行业运营标准
- 非居住用房转移申请书
- 2025-2026学年辽宁省葫芦岛市连山区八年级(上)期末数学试卷(含答案)
- 上海市松江区2026届初三一模物理试题(含答案)
- 小学六年级英语2026年上学期语法改错综合真题
- 2026长治日报社工作人员招聘劳务派遣人员5人备考题库完美版
- 护理核心制度内容精要
- 光伏板清洗施工方案
- 阅读理解体裁与命题方向(复习讲义)-2026年春季高考英语(上海高考专用)
- 2024年全国职业院校技能大赛ZZ060 母婴照护赛项规程以及母婴照护赛项赛题1-10套
- 上海布邦流体过滤产品知识课件
- 舒城县2023-2024学年四年级数学第一学期期末达标检测模拟试题含答案
- 《干部履历表》1999版电子版
评论
0/150
提交评论