又称折半查找,把要查找的元素跟序列中中间位置的元素进行比较,如果比中间位置元素小,就从序列的左半部分查找,反之,从序列的右半部分查找,对折半后的序列再按照类似比较中间元素折半的方法查找; 二分查找要求序列是支持索引的,所以也就是作用对象是顺序表,然后要求原始的序列必须是有序的; 2. 代码实现 2.1 递归版...
1#二分查找2defBinarySearch(arr, left, right, findVal):3print("二分查找")4#找到就返回5ifleft >right:6return-17mid = (left + right) // 2#中间值索引8midVal = arr[mid]#中间值9iffindVal > midVal:#要查找的值大于中间值则向右递归10returnBinarySearch(arr, mid+1, right, findVal)11elif...
本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法。本课内容包括课程概述、算法分析、基本线性结构、递归与动态规划、排序与查找、树及其算法、图及其算法等。 字幕制作者(中文(中国)):chbpku...
Python3 数据结构与算法的介绍及应用。1. 数据结构:数组、链表、栈、队列、树、堆、图; 2. 典型排序算法:冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序、桶排序、计数排序、基数排序; 3. 查找算法: 顺序查找、二分查找、哈希表查找、二叉查找树
学习笔记-数据结构与算法-归并排序 归并排序核心思想: 将一个数组一分二,然后将两个数组分别排序,最后将两个有序数据合并,就完成了归并排序。 归并排序使用的是分治思想,分而治之,将一个大问题分解为n个小问题,小问题解决了,大问题也就解决了。 归并排序一般使用递归来实现,要写出递归代码的关键,写出递推公式...
本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法。本课内容包括课程概述、算法分析、基本线性结构、递归与动态规划、排序与查找、树及其算法、图及其算法等。 字幕制作者(中文(中国)):chbpku...
#二分查找(搜索)#条件:1.顺序表(通过地址找到,时间复杂度为O(1), 如果是链表,则需要遍历)#2.已排序好#时间复杂度:O(logN)#递归实现defbinary_search1(li, item): mid_index= len(li) // 2#递归结束的条件iflen(li) ==0:#if mid_index == 0:returnFalseifli[mid_index] >item:#中间元素大于...
right =len(lst)-1 whileleft <= right:# 候选区有值 mid = (left + right) //2# 向下取整 iflst[mid] == val: returnmid eliflst[mid] > val:# 目标值在mid左侧 right = mid -1 else:# lst(mid) < val, 目标值在mid右侧 left = mid +1 ...