算法学习
星辰不负有心人
没人会在意你有多努力,好像大家只会看结果如何。
展开
-
C++基本算法之小数二分
共一行,包含一个浮点数,表示问题的解。给定一个浮点数 n,求它的三次方根。共一行,包含一个浮点数 n。注意,结果保留 6 位小数。原创 2023-04-16 22:08:23 · 82 阅读 · 0 评论 -
C++基本算法之二分
对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。接下来 q 行,每行包含一个整数 k,表示一个询问元素。第一行包含整数 n和 q,表示数组长度和询问个数。如果数组中不存在该元素,则返回 -1 -1。原创 2023-04-16 22:03:39 · 129 阅读 · 0 评论 -
C++基本算法之归并排序求逆序对
逆序对的定义如下:对于数列的第 i 个和第 jj个元素,如果满足 ia[j],则其为一个逆序对;第二行包含 n 个整数(所有整数均在1~1e9范围内),表示整个数列。给定一个长度为 n 的整数数列,请你计算数列中的逆序对的数量。数列中的元素的取值范围 [1,1e9]。第二行包含 n 个整数,表示整个数列。第一行包含整数 n,表示数列的长度。时间复杂度为O(nlog2^n).输入共两行,第一行包含整数 n。原创 2023-04-16 18:32:42 · 545 阅读 · 0 评论 -
C++基本算法之快速排序
这种划分方式在平均情况下时间复杂度为 O(nlogn)。最坏情况为数组已排好序或者数组中的数都相等,此时每次划分只会将数组的长度减少1,会递归 n次,导致时间复杂度为 O(n^2),空间复杂度为 O(n)。第二行包含 n 个整数(所有整数均在1~1e9范围内),表示整个数列。请你使用快速排序对这个数列按照从小到大进行排序。输出共一行,包含 n 个整数,表示排好序的数列。输入共两行,第一行包含整数 n。给定你一个长度为n的整数数列。并将排好序的数列按顺序输出。原创 2023-04-15 19:17:12 · 133 阅读 · 2 评论 -
C++基本算法之归并排序
请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。第二行包含 n 个整数(所有整数均在 1∼10e9 范围内),表示整个数列。输出共一行,包含 n 个整数,表示排好序的数列。给定你一个长度为 nn 的整数数列。输入共两行,第一行包含整数 n。时间复杂度为O(nlog2^n)原创 2023-04-16 18:20:02 · 86 阅读 · 1 评论