首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

算法学习笔记(二):平方根倒数速算法

序 这是一个神奇的算法! 一、介绍 起源于一篇《改变计算技术的伟大算法》文章,知道这个算法,然后google一下,维基讲的还不错,本文权当自己理清下思路。...所以弄清算法关键障碍是:在计算机中是如何表示浮点数和整数的、整数运算又怎能算出浮点数的平方根倒数的近似值、0x5f3759df怎么来的。...如果用上图的浮点数字节序列来表示整数,那么 ,即 .平方根倒数函数仅能处理正数,所以符号位均为0。...“现在不仅该算法的原作者不明,人们也仍无法明确当初选择这个“魔术数字”的方法。...平方根倒数速算法的神奇之处在于:1、充分利用了浮点数和整数在计算机中的表示,然后以两次转换表示和一次整数运算替换复杂的浮点数计算,最后通过牛顿法加强精度;2、R的取值。

83620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【小Y学算法】⚡️每日LeetCode打卡⚡️——21.x 的平方根

    ---- 前言 每天打卡一道算法题,既是一个学习过程,又是一个分享的过程 提示:本专栏解题 编程语言一律使用 C# 和 Java 两种进行解题 要保持一个每天都在学习的状态,让我们一起努力成为算法大神吧...今天是力扣算法题持续打卡第21天! ---- 原题样例 实现int sqrt(int x)函数。 计算并返回 x 的平方根,其中 x 是非负整数。...示例 1: 输入: 4 输出: 2 示例 2: 输入: 8 输出: 2 说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。...---- C#方法:二分查找 思路解析 根据题意我们知道,最终目的就是返回 x 的平方根 我们可以直接调用Sqrt方法找到平方根,但是这就不是算法的本意啦~ 所以可以使用二分法来解决这个问题 二分查找的下界为...文章采用 C#和 Java 两种编程语言进行解题 一些方法也是参考力扣大神写的,也是边学习边分享,再次感谢算法大佬们 那今天的算法题分享到此结束啦,明天再见!

    28130

    贪心算法求快速平方根倒数算法中的“魔术数字”【含matlab源代码】

    快速平方根倒数算法(Fast InvSqrt)是一种快速计算平方根的倒数的算法,常用于向量标准化运算,在光照渲染中有重要应用。...一、快速平方根倒数算法简介及实现 1.1 算法简介 在计算平方根的倒数时,传统的计算方法是先计算a的平方根sqrt(a),再计算它的倒数1/sqrt(a)。...而快速平方根倒数算法则将输入的32位浮点数a作为一个整数i,用“魔术数字”0x5f3759df减去i右移一位的值产生近似的估值y,再使用牛顿迭代法迭代一次,就得到了相当精度的计算结果。...随机选取几个数,以上文所得的R* = 1597385922为“魔术数字”,用快速平方根倒数算法计算,结果如下: 可见使用该“魔术数字”的计算精度较高。...参考资料: [1] https://www.zhihu.com/question/26287650 [2] 平方根倒数速算法_百度百科

    1.3K30

    平方根的C语言实现(二) —— 手算平方根的原理

    一个函数从数学上来说可以有无数个函数列收敛于这个函数,那么程序逼近实现来说可以有无数种算法平方根自然也不例外。   ...不知道有多少人还记得手算平方根,那是满足每次在结果上添加一位,也就是按位逼近运算结果的唯一算法。至于数学上如何证明这个唯一性我就不说了,数学证明不会有那么多人有兴趣。...接下去我们要去利用之前的这个算法,改装一下,来进行二进制的开平方。   二进制的每一位不是1就是0,这样在每次往前推一位的时候就相对简单。   ...举个例子,我们来算121的平方根,也就是二进制下1111001的平方根。   ...  ------------------                         0 每往右边推1位,下面的除数就是上面当前算出来的二进制的数右移两位再加1或者加0 之后,我们就可以用构建利用此算法平方根

    2.1K90

    LeetCode - #69 x 的平方根

    的 Swift 算法题题解整理为文字版以方便大家学习与阅读。...LeetCode 算法到目前我们已经更新了 68 期,我们会保持更新时间和进度(周一、周三、周五早上 9:00 发布),每期的内容不多,我们希望大家可以在上班路上阅读,长久积累会有很大提升。...描述 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。...示例 示例 1 输入:x = 4 输出:2 示例 2 输入:x = 8 输出:2 解释:8 的算术平方根是 2.82842..., 由于返回类型是整数,小数部分将被舍去。...时间复杂度:O(logn) 空间复杂度:O(1) 注意: 请使用(右-左)/ 2 +左来获得中间以防整数溢出 该算法题解的仓库:LeetCode-Swift[1] 点击前往 LeetCode[2] 练习

    51220
    领券