返回顶部
首页 > 资讯 > 精选 >如何理解Java数据结构与算法
  • 548
分享到

如何理解Java数据结构与算法

2023-06-15 13:06:38 548人浏览 安东尼
摘要

本篇内容介绍了“如何理解Java数据结构与算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本介绍鸿蒙官方战略合作共建——HarmonyO

本篇内容介绍了“如何理解Java数据结构与算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

如何理解Java数据结构与算法

基本介绍

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 斐波那契是指把一条线段分割成两部分,使其中一部分与全长之比等于另一部分与这部分之比。取其前三位数字的近似值是0.618。由于按此比例设计的造型十分美丽,因此也称为黄金分割,也称中外比。

  3. 斐波那契数列{1,1,2,3,5,8,13,21,34,55}发现斐波那契数列的两个相邻数的比例,无限接近黄金分割值0.618.

斐波那契查找原理

斐波那契查找原理与二分查找和插值查找相似,仅仅改变了中间点(mid)的位置,mid不再是中间或插值得到的,而是位于黄金分割点附近,即mid =  low+F(k-1)-1,F代表斐波那契数列,如下图

如何理解Java数据结构与算法

对F(k-1)-1的理解:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 由于斐波那契数列F[k] = F[k-1]+F[k-2]的性质,可以得到**(F[k]-1) =  (F[k-1]-1)+(F[k-2]-1)+1**。该公式说明:主要顺序表的长度为F[k]-1,则可以将该表分成长度为**F[k-1]和F[k-2]**的两段,即如上图所示。从而中间位置为:mid  = low+F(k-1)-1。

  3. 类似的,每个字段也可以才用相似的方式分割。

  4. 但顺序表长度n不一定刚好等于F[k]-1,所以需要将原来的顺序表长度n增加至F[k]-1。这里的k值只要能使得F[k]-1恰好大于等于n即可,由以下代码得到,顺序表长度增加后,新增的位置(从n+1到F[k]-1),都赋为n位置的值即可.

while(n>fib(k)-1){    k++; }

代码案例

package com.xie.search;  public class Fibonacci {      public static void main(String[] args) {         int arr[] = {1, 8, 10, 89, 1000, 1234};         int n = 6;         int x = 1;  //        int[] arr = new int[100]; //        for (int i = 0; i < 100; i++) { //            arr[i] = i; //        } //        int n = 100; //        int x = 1;          System.out.println("Found at index: " +                 fibMonaccianSearch(arr, x, n));     }           public static int min(int x, int y) {         return (x <= y) ? x : y;     }           public static int fibMonaccianSearch(int arr[], int x, int n) {         // 初始化斐波那契数         //第(m-2)个斐波那契编号         int fibMMm2 = 0;         //第(m-1)个斐波那契编号         int fibMMm1 = 1;         //第 m个斐波那契数         int fibM = fibMMm2 + fibMMm1;                   while (fibM < n) {             fibMMm2 = fibMMm1;             fibMMm1 = fibM;             fibM = fibMMm2 + fibMMm1;         }          // 从前面标记消除的范围         int offset = -1;                   while (fibM > 1) {             // 检查fibMm2是否为有效位置             int i = min(offset + fibMMm2, n - 1);                           if (arr[i] < x) {                 fibM = fibMMm1;                 fibMMm1 = fibMMm2;                 fibMMm2 = fibM - fibMMm1;                 offset = i;             } else if (arr[i] > x) {                                  fibM = fibMMm2;                 fibMMm1 = fibMMm1 - fibMMm2;                 fibMMm2 = fibM - fibMMm1;             } else {                                  return i;             }         }                   if (fibMMm1 == 1 && arr[offset + 1] == x) {             return offset + 1;         }                   return -1;     } }

“如何理解Java数据结构算法”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: 如何理解Java数据结构与算法

本文链接: https://lsjlt.com/news/280269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何理解Java数据结构与算法
    本篇内容介绍了“如何理解Java数据结构与算法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!基本介绍鸿蒙官方战略合作共建——HarmonyO...
    99+
    2023-06-15
  • Java数据结构与算法实例讲解
    这篇文章主要讲解了“Java数据结构与算法实例讲解”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java数据结构与算法实例讲解”吧! 为什么需要树这种结构数组存储方式分析:优点:通...
    99+
    2023-06-15
  • 分析Java数据结构与算法
    本篇内容主要讲解“分析Java数据结构与算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“分析Java数据结构与算法”吧!1.什么是二叉树二叉树:就是每个节点都...
    99+
    2024-04-02
  • JavaScript数据结构与算法怎么理解
    本篇内容主要讲解“JavaScript数据结构与算法怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript数据结构与算法怎么理解”吧!前言数据结构与算法这个词相信大家都听过、...
    99+
    2023-07-02
  • Java数据结构与算法之单链表深入理解
    目录一、单链表(Linked List)简介二、单链表的各种操作1.单链表的创建和遍历2.单链表的按顺序插入节点 以及节点的修改3.单链表节点的删除4.以上单链表操作的代码实现 (通...
    99+
    2024-04-02
  • Java红黑树的数据结构与算法解析
    目录红黑树的介绍红黑树的实现1.节点2.查找3.平衡化颜色反转 插入的实现红黑树的复杂度–总结红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的...
    99+
    2024-04-02
  • JavaScript数据结构与算法
    目录前言数据结构常见的数据结构算法算法的特征算法的目标总结前言 数据结构与算法这个词相信大家都听过、了解过、学过,那为什么要学习数据结构与算法呢?我感觉有以下两个原因: 为了一个比较...
    99+
    2024-04-02
  • Java数据结构与算法之稀疏数组与队列深入理解
    目录一、数据结构和算法简介二、稀疏数组稀疏数组的应用实例二维数组与稀疏数组的转换二维数组 转 稀疏数组的思路稀疏数组 转 原始的二维数组的思路三、队列数组模拟队列代码优化:数组模拟环...
    99+
    2024-04-02
  • java数据结构与算法(快速排序法)
    快速排序法: 顾名思议,快速排序法是实践中的一种快速的排序算法,在c++或对java基本类型的排序中特别有用。它的平均运行时间是0(N log N)。该算法之所以特别快,主要是由于非...
    99+
    2024-04-02
  • 算法与数据结构之如何理解时间与空间复杂度
    本篇内容介绍了“算法与数据结构之如何理解时间与空间复杂度”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写在...
    99+
    2024-04-02
  • Java数据结构彻底理解关于KMP算法
    大家好,前面的有一篇文章讲了子序列和全排列问题,今天我们再来看一个比较有难度的问题。那就是大名鼎鼎的KMP算法。 本期文章源码:GitHub源码 简介 KMP算法是一种改进的字符串...
    99+
    2024-04-02
  • java数据结构与算法之快速排序详解
    本文实例讲述了java数据结构与算法之快速排序。分享给大家供大家参考,具体如下:交换类排序的另一个方法,即快速排序。快速排序:改变了冒泡排序中一次交换仅能消除一个逆序的局限性,是冒泡排序的一种改进;实现了一次交换可消除多个逆序。通过一趟排序...
    99+
    2023-05-31
    java 数据结构 算法
  • java数据结构与算法之冒泡排序详解
    本文实例讲述了java数据结构与算法之冒泡排序。分享给大家供大家参考,具体如下:前面文章讲述的排序算法都是基于插入类的排序,这篇文章开始介绍交换类的排序算法,即:冒泡排序、快速排序(冒泡排序的改进)。交换类的算法:通过交换逆序元素进行排序的...
    99+
    2023-05-31
    java 数据结构 算法
  • python数据结构与算法(3)
    Python内置类型性能分析 timeit模块timeit模块可以⽤来测试⼀⼩段Python代码的执⾏速度。class timeit.Timer(stmt='pass', setup='pass', ...
    99+
    2023-01-31
    数据结构 算法 python
  • Java数据结构与算法系列精讲之KMP算法
    概述 从今天开始, 小白我将带大家开启 Java 数据结构 & 算法的新篇章. KMP 算法 KMP (Knuth-Morris-Pratt), 是一种改进的字符串匹配算法...
    99+
    2024-04-02
  • JS数据结构与算法中的队列结构详解
    目录队列结构一.认识队列二.队列的应用三.队列类的创建四.队列的常见操作五.击鼓传花六.优先级队列七.优先级队列的实现队列结构 一.认识队列 受限的线性结构:我们已经学习了一种受限的...
    99+
    2022-11-13
    JS数据结构与算法 JS队列结构
  • java数据结构与算法之马踏棋盘
    本文实例为大家分享了java数据结构与算法之马踏棋盘的具体代码,供大家参考,具体内容如下 马踏棋盘算法也被称为骑士周游问题将马随机放在过期象棋的8x8棋盘的某个方格中,马按走棋规则进...
    99+
    2024-04-02
  • Java数据结构与算法的示例分析
    这篇文章给大家分享的是有关Java数据结构与算法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。第1章 数据结构与算法基础概述1.1 数据结构和算法的重要性算法是程序的灵魂,优秀的程序可以在海量数据计算时...
    99+
    2023-06-29
  • Java中的数据结构与算法有哪些
    这篇文章给大家介绍Java中的数据结构与算法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存...
    99+
    2023-06-08
  • Python数据结构与算法之算法分析详解
    目录0. 学习目标1. 算法的设计要求1.1 算法评价的标准1.2 算法选择的原则2. 算法效率分析2.1 大O表示法2.2 常见算法复杂度2.3 复杂度对比3. 算法的存储空间需求...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作