摘要: 归并排序 归并排序 所用方法和基本原理 归并排序是一种基于分治思想的排序算法。其基本原理如下: 分解:将一个长度为 (n) 的数组不断地二分,直到每个子数组只包含一个元素(因为单个元素的数组天然是有序的)。例如,对于长度为 (n) 的数组,先找到中间位置 (mid),将数组分为左半部分 ([l, mid]) 阅读全文
posted @ 2025-06-25 22:39 起个数先 阅读(15) 评论(0) 推荐(0)
摘要: 逆序对的数量 逆序对数量 给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。 逆序对的定义如下:对于数列的第 i 个和第 j 个元素,如果满足 i < j 且 a[i] > a[j],则其为一个逆序对;否则不是。 所用方法和基本原理 该代码使用归并排序的思想来计算逆序对的数量。基本原理如下: 分解:和 阅读全文
posted @ 2025-06-25 22:38 起个数先 阅读(48) 评论(0) 推荐(0)
摘要: 第k个数 第K个数 给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。 所用方法和基本原理 快速选择算法是基于快速排序思想的一种选择算法。其基本原理如下: 划分操作:选择一个基准元素(这里选择数组中间位置的元素),通过双指针法将数组分为两部分,使得左边部分 阅读全文
posted @ 2025-06-25 22:37 起个数先 阅读(37) 评论(0) 推荐(0)
摘要: 数的范围 数的范围 给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。 对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。 如果数组中不存在该元素,则返回 -1 -1。 所用方法和基本原理 该代码使用二分查找的方法来解决问题,原理如下: 查找起始位置: 使用二分查找, 阅读全文
posted @ 2025-06-25 22:36 起个数先 阅读(37) 评论(0) 推荐(0)
摘要: 数的三次方根 数的三次方根 给定一个浮点数 n,求它的三次方根。 所用方法和基本原理 该代码采用二分查找的方法来求解浮点数的三次方根。基本原理如下: 确定搜索区间:因为任何实数的三次方根都在 -10000 到 10000 这个范围内(这里选择这两个边界是为了涵盖绝大多数实际情况),所以将初始搜索区间设定为 [-1 阅读全文
posted @ 2025-06-25 22:35 起个数先 阅读(24) 评论(0) 推荐(0)
摘要: 快速排序介绍 快速排序(QuickSort)是一种 分治法 排序算法,基本思想是通过一个 基准元素 将待排序的数组分成两部分,使得一部分元素小于基准元素,另一部分元素大于基准元素,然后递归地对这两部分进行排序。 快速排序的步骤: 选择基准:选择一个基准元素,通常是数组的第一个元素、最后一个元素或者中 阅读全文
posted @ 2025-06-25 22:32 起个数先 阅读(30) 评论(0) 推荐(0)