首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    堆排序(HeapSort)之java实现

    堆是一种重要的数据结构,为一棵完全二叉树, 底层如果用数组存储数据的话,假设某个元素为序号为i(Java数组从0开始,i为0到n-1), 如果它有左子树,那么左子树的位置是2i+1,如果有右子树,右子树的位置是2i+2,如果有父节点,父节点的位置是(n-1)/2取整。分为最大堆和最小堆,最大堆的任意子树根节点不小于任意子结点,最小堆的根节点不大于任意子结点。所谓堆排序就是利用堆这种数据结构来对数组排序,我们使用的是最大堆。处理的思想和冒泡排序,选择排序非常的类似,一层层封顶,只是最大元素的选取使用了最大堆。最大堆的最大元素一定在第0位置,构建好堆之后,交换0位置元素与顶即可。堆排序为原位排序(空间小), 且最好与最坏运行时间是都是O(nlogn)。而且堆排序还是原地算法(in-place algorithm),是渐进最优的比较排序算法。

    02

    面试算法:在海量数据中快速查找第k小的条目

    像BAT这种巨型互联网公司每天都要出来海量数据。假设从服务器上产生的数据条目数为n,这个值是事先不知道的,唯一确定的是这个值非常大,假定项目需要快速从这n条数据中查找第k小的条目,其中k的值是事先能确定的,请你设计一个设计一个满足需求并且兼顾时间和空间效率的算法。 这个题目的难度有若干处,第一是数据数n无法确定,你无法动态的分配合适的空间来存储数据。其次是数据条目数n相当大,如果直接根据n来分配内存会产生巨大的损耗,第三是速度要足够快,但要在海量级数据中实现快速查找不是一件容易的事情。 解决这道题的关键在于

    04

    懂点深度学习:【白话】模型

    问题导读 1.什么是机器学习模型? 2.机器学习数学符号是如何认识的? 3.损失函数的作用是什么? 我们可能听说过机器学习、深度学习。可是我们可能觉得非常神秘或则难懂。有这种感觉,是因为对人工智能缺乏了解造成的。深度学习和我们的传统编程其实是差不多的,关键是我们要懂里面的逻辑,或则说知识,或则说门道,懂了这些,我们机器学习就会比较简单了。这里给大家说说,我们经常听到的“模型”,什么是机器学习模型,模型训练,怎么个训练法。 提前说明的是,这里我们举例,举例的时候大家可能看到一些特殊的符号就懵逼了,其实这都是我们的错觉造成的,比如2的N次方,我们知道它是2*2*2.。N,这是它表示的含义。可能当我们看到

    02
    领券