Hello算法笔记
文章平均质量分 77
《Hello算法》是GitHub上一个开源书籍,对新手友好,有大量的动态图,很适合算法初学者自主学习入门。而我则是正式学习算法,以这本书为参考,写写笔记,有错误的地方还请指正,下面我会用python和C++实现其中的实例
夏天是冰红茶
目前正在考研,今年希望一次上岸
展开
-
查找算法之二分查找
观察发现,在“双闭区间”表示中,由于对左右两边界的定义是相同的,因此缩小区间的 i , j 处理方法也是对称的,这样更不容易出错。二分查找,利用数据的有序性,通过每轮缩小一半搜索区间来查找目标元素。,元素从小到大排列。数组的索引取值范围为:0,1,2,⋯,n−1。首先,我们先采用“双闭区间”的表示,在数组 nums。定一个长度为 n 的排序数组 nums。接下来,以python与C++为例。中查找目标元素 target。原创 2023-01-09 21:20:02 · 1688 阅读 · 0 评论 -
排序算法之冒泡算法
《Hello算法》是GitHub上一个开源书籍,对新手友好,有大量的动态图,很适合算法初学者自主学习入门。而我则是正式学习算法,以这本书为参考,写写笔记,有错误的地方还请指正,下面我会用python和C++实现其中的实例。原创 2023-01-04 21:24:00 · 648 阅读 · 5 评论 -
排序算法之插入排序
插入排序是一种基于数组插入操作的排序算法。它的思想是:选定数组的某个元素为基准数base,将 base与其左边的元素依次对比大小,并“插入”到正确位置。然而,由于数组在内存中的存储方式是连续的,我们无法直接把base插入到目标位置,而是需要将从目标位置到base之间的所有元素向右移动一位(本质上是一次数组插入操作)。原创 2023-01-05 08:45:00 · 1200 阅读 · 0 评论 -
排序算法之快速排序
Quick Sort是一种基于“分治思想”的排序算法,速度快、应用广。快速排序的核心操作为“哨兵划分”,其目标是:选取数组某个元素为 基准数 ,将所有小于基准数的元素移动至其左边,大于基准数的元素移动至其右边。原创 2023-01-06 09:00:00 · 1172 阅读 · 0 评论 -
排序算法之归并排序
划分是从上到下将数组从中点切为两个子数组,直至长度为1;计算数组中点mid,划分左子数组([left,mid])以及右子数组([mid+1,right]);递归执行1.步骤,直至子数组区间长度为1时,终止递归划分;合并从底至顶地将左子数组和右子数组合并为一个有序数组;需要注意的是,由于从长度为 1 的子数组开始合并,所以每个子数组都是有序的。因此,合并任务本质是要将两个有序子数组合并为一个有序数组。原创 2023-01-07 10:48:09 · 890 阅读 · 0 评论 -
查找算法之线性查找
线性查找(Linear Search)是一种最基础的查找方法,其从数据结构的一端开始,依次访问每个元素,直到另一端后停止。由于线性查找是依次访问元素的,即没有跳跃访问元素,因此数组或链表皆适用。线性查找实质上就是遍历数据结构 + 判断条件。比如,我们想要在数组。的对应索引,那么可以在数组中进行线性查找。在数据量 n 很大时,查找效率很低。依旧以python与C++为例。其中 n 为数组或链表长度。原创 2023-01-08 22:20:44 · 496 阅读 · 0 评论