漫画堆改名(漫画堆免费网站)

2023-08-01 01:08:08
手游app游戏网 > 手游app游戏网 > 漫画堆改名(漫画堆免费网站)

这样一来,包括元素12在内的较大元素有5个,正好和k相等。所以,基准元素12就是我们所求的。

快看漫画

————— 第二天 —————

如果 k=6,也就是要寻找第6大的元素,这个元素是哪一个呢?

显然,数组中第一大的元素是24,第二大的元素是20,第三大的元素是17 ...... 第6大的元素是9

方法一:排序法

方法二:插入法

比如k=3,先把最左侧的7,5,15三个数有序放入数组A当中,代表当前最大的三个数。

这时候,遍历到3, 由于3<5,继续遍历。

接下来遍历到17,由于17>5,插入到数组A的合适位置,类似于插入排序,并把原先最小的元素5“挤出去”。

最终,数组A中存储的元素是24,20,17,代表着整个数组中最大的3个元素。此时数组A中的最小的元素17就是我们要寻找的第k大元素。

方法三:小顶堆法

假设k=5,具体的执行步骤如下:

1.把数组的前k个元素构建成堆。

2.继续遍历数组,和堆顶比较,如果小于等于堆顶,则继续遍历;如果大于堆顶,则取代堆顶元素并调整堆。

遍历到元素2,由于 2<3,所以继续遍历。

遍历到元素20,由于 20>3,20取代堆顶位置,并调整堆。

遍历到元素24,由于 24>5,24取代堆顶位置,并调整堆。

3.此时的堆顶,就是堆中的最小值,也就是数组中的第k大元素。

1.构建堆的时间复杂度是 O(k)

2.遍历剩余数组的时间复杂度是O(n-k)

3.每次调整堆的时间复杂度是 O(logk)

其中2和3是嵌套关系,1和2,3是并列关系,所以总的最坏时间复杂度是O((n-k)logk + k)。当k远小于n的情况下,也可以近似地认为是O(nlogk)

/** * 寻找第k大的元素 * @param array 待调整的堆 * @param k 第几大 */ public static int findNumberK(int[] array, int k){ //1.用前k个元素构建小顶堆 buildHeap(array, k); //2.继续遍历数组,和堆顶比较 for(int i=k; i array[0]){ array[0] = array[i]; downAdjust(array, 0, k); } } //3.返回堆顶元素 return array[0]; } /** * 构建堆 * @param array 待调整的堆 * @param length 堆的有效大小 */ private static void buildHeap(int[] array, int length) { // 从最后一个非叶子节点开始,依次下沉调整 for (int i = (length-2)/2; i >= 0; i--) { downAdjust(array, i, length); } } /** * 下沉调整 * @param array 待调整的堆 * @param index 要下沉的节点 * @param length 堆的有效大小 */ private static void downAdjust(int[] array, int index, int length) { // temp保存父节点值,用于最后的赋值 int temp = array[index]; int childIndex = 2 * index + 1; while (childIndex < length) { // 如果有右孩子,且右孩子小于左孩子的值,则定位到右孩子 if (childIndex + 1 < length && array[childIndex + 1] < array[childIndex]) { childIndex++; } // 如果父节点小于任何一个孩子的值,直接跳出 if (temp <= array[childIndex]) break; //无需真正交换,单向赋值即可 array[index] = array[childIndex]; index = childIndex; childIndex = 2 * childIndex + 1; } array[index] = temp; } public static void main(String[] args) { int[] array = new int[] {7,5,15,3,17,2,20,24,1,9,12,8}; System.out.println(findNumberK(array, 5)); }

方法四:分治法

包括元素7在内的较大元素有8个,但我们的k=5,显然较大元素的数目过多了。于是我们在较大元素的区域继续分治,这次以元素12位基准:

一切的是非黑白,

该网站坚持“我们坚持每日更新优质电子书”的口号,汇集了大量Kindle电子书,EPUB、MOBI、AZW3等格式,没有设置分类,但网站右侧“热门标签”按照标签分类,便于我们找寻自己喜欢的电子书。

  它还支持非常有意思的漫画算法版块,让你通过趣味漫画的内容学习形式,更加轻松高效的学习算法。

  15:NounPlus

  通过该搜索引擎你可以搜索到丰富的公开课视频教程,网站收录了 51163 个在线课程资源,并且支持丰富的学习科目,包括:艺术,体育,人文,生物学和生命科学,环境科学,化学,物理科学,商业管理,计算机科学,经济与金融,技术,图形艺术,网络营销,网络技术等等科目,点击任意科目,网站就会出现很多课程结果;当然,网站也支持直接搜索。

作者:admin | 分类:手游app游戏网 | 浏览:23 | 评论:0