国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Java編程內功-數據結構與算法「斐波那契查找」

開發 后端 算法
斐波那契是指把一條線段分割成兩部分,使其中一部分與全長之比等于另一部分與這部分之比。取其前三位數字的近似值是0.618。由于按此比例設計的造型十分美麗,因此也稱為黃金分割,也稱中外比。

[[398011]]

基本介紹

  1. 斐波那契是指把一條線段分割成兩部分,使其中一部分與全長之比等于另一部分與這部分之比。取其前三位數字的近似值是0.618。由于按此比例設計的造型十分美麗,因此也稱為黃金分割,也稱中外比。
  2. 斐波那契數列{1,1,2,3,5,8,13,21,34,55}發現斐波那契數列的兩個相鄰數的比例,無限接近黃金分割值0.618.

斐波那契查找原理

斐波那契查找原理與二分查找和插值查找相似,僅僅改變了中間點(mid)的位置,mid不再是中間或插值得到的,而是位于黃金分割點附近,即mid = low+F(k-1)-1,F代表斐波那契數列,如下圖

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

  1. 由于斐波那契數列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。
  2. 類似的,每個字段也可以才用相似的方式分割。
  3. 但順序表長度n不一定剛好等于F[k]-1,所以需要將原來的順序表長度n增加至F[k]-1。這里的k值只要能使得F[k]-1恰好大于等于n即可,由以下代碼得到,順序表長度增加后,新增的位置(從n+1到F[k]-1),都賦為n位置的值即可.
  1. while(n>fib(k)-1){ 
  2.    k++; 

 代碼案例

  1. package com.xie.search; 
  2.  
  3. public class Fibonacci { 
  4.  
  5.     public static void main(String[] args) { 
  6.         int arr[] = {1, 8, 10, 89, 1000, 1234}; 
  7.         int n = 6; 
  8.         int x = 1; 
  9.  
  10. //        int[] arr = new int[100]; 
  11. //        for (int i = 0; i < 100; i++) { 
  12. //            arr[i] = i; 
  13. //        } 
  14. //        int n = 100; 
  15. //        int x = 1; 
  16.  
  17.         System.out.println("Found at index: " + 
  18.                 fibMonaccianSearch(arr, x, n)); 
  19.     } 
  20.  
  21.     /** 
  22.      * 返回x和y最小的數 
  23.      * 
  24.      * @param x 
  25.      * @param y 
  26.      * @return 
  27.      */ 
  28.     public static int min(int x, int y) { 
  29.         return (x <= y) ? x : y; 
  30.     } 
  31.  
  32.     /** 
  33.      * 斐波那契搜索x的索引,找到就返回索引位置,否則返回-1 
  34.      * <p> 
  35.      * 算法說明: 
  36.      * 令arr[0..n-1]為輸入數組,要搜索的元素為x。 
  37.      * 1.找到大于或等于n的最小斐波那契數。將此數字設為fibM [第m個斐波納契數], 
  38.      * 設其前面的兩個斐波那契數為fibMm1 [第(m-1)個斐波那契數]和fibMm2 [第(m-2)個斐波那契數]。 
  39.      * 2.當數組中有要檢查的元素時: 
  40.      *  a.將x與fibMm2覆蓋范圍的最后一個元素進行比較,如果x匹配,則返回索引; 
  41.      *  b.如果x小于元素,則將三個Fibonacci變量向前移動兩個Fibonacci,表示消除了剩余數組的大約后三分之二; 
  42.      *  c.如果x大于元素,則將三個斐波那契變量向后移動一個斐波那契。將偏移量重置為索引。這些加在一起表明消除了其余陣列的大約三分之一; 
  43.      * 3.由于可能還有一個元素需要比較,因此請檢查fibMm1是否為1。如果是,則將x與該剩余元素進行比較。如果匹配,則返回索引。 
  44.      * 
  45.      * @param arr 數組 
  46.      * @param x   查找的值 
  47.      * @param n   數組的長度 
  48.      * @return x索引位置或者-1 
  49.      */ 
  50.     public static int fibMonaccianSearch(int arr[], int x, int n) { 
  51.         // 初始化斐波那契數 
  52.         //第(m-2)個斐波那契編號 
  53.         int fibMMm2 = 0; 
  54.         //第(m-1)個斐波那契編號 
  55.         int fibMMm1 = 1; 
  56.         //第 m個斐波那契數 
  57.         int fibM = fibMMm2 + fibMMm1; 
  58.  
  59.         /* fibM將存儲最小的斐波那契數大于或等于n*/ 
  60.         while (fibM < n) { 
  61.             fibMMm2 = fibMMm1; 
  62.             fibMMm1 = fibM; 
  63.             fibM = fibMMm2 + fibMMm1; 
  64.         } 
  65.  
  66.         // 從前面標記消除的范圍 
  67.         int offset = -1; 
  68.  
  69.         /* 循環檢查元素,注意,我們將arr[fibMm2]與x進行了比較,當fibM變為1時,fibMm2變為0 */ 
  70.         while (fibM > 1) { 
  71.             // 檢查fibMm2是否為有效位置 
  72.             int i = min(offset + fibMMm2, n - 1); 
  73.  
  74.             /* 如果x大于索引fibMm2處的值,則將從offset到i切割為子數組 */ 
  75.             if (arr[i] < x) { 
  76.                 fibM = fibMMm1; 
  77.                 fibMMm1 = fibMMm2; 
  78.                 fibMMm2 = fibM - fibMMm1; 
  79.                 offset = i; 
  80.             } else if (arr[i] > x) { 
  81.                 /*如果小于索引fibMm2處的值,則將從i+1到arr.length-1進行切割數組*/ 
  82.                 fibM = fibMMm2; 
  83.                 fibMMm1 = fibMMm1 - fibMMm2; 
  84.                 fibMMm2 = fibM - fibMMm1; 
  85.             } else { 
  86.                 /*找到了,就返回索引*/ 
  87.                 return i; 
  88.             } 
  89.         } 
  90.  
  91.         /* 將最后一個元素與x比較 */ 
  92.         if (fibMMm1 == 1 && arr[offset + 1] == x) { 
  93.             return offset + 1; 
  94.         } 
  95.  
  96.         /*沒有找打,返回-1 */ 
  97.         return -1; 
  98.     } 

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-04-07 09:26:37

Java數據結構算法

2021-04-23 09:12:09

Java數據結構算法

2021-05-12 09:07:09

Java數據結構算法

2021-03-18 08:44:20

Java數據結構算法

2021-03-09 06:30:32

JAVA數據結構算法

2021-04-13 09:37:41

Java數據結構算法

2021-03-23 08:33:22

Java數據結構算法

2021-03-26 08:40:28

Java數據結構算法

2021-03-12 09:13:47

Java數據結構算法

2021-03-08 06:28:57

JAVA數據結構與算法稀疏數組

2021-03-17 09:27:36

Java數據結構算法

2021-03-10 08:42:19

Java數據結構算法

2021-04-27 06:21:29

Java數據結構算法

2012-02-22 10:14:44

Java

2021-04-15 09:36:44

Java數據結構算法

2021-04-16 09:40:52

Java數據結構算法

2021-03-14 08:27:40

Java數據結構算法

2021-04-22 10:07:45

Java數據結構算法

2021-05-13 07:34:56

Java數據結構算法

2021-10-31 21:01:00

數列TypeScriptJava
點贊
收藏

51CTO技術棧公眾號

国产精品久av福利在线观看| 日本福利一区二区三区| 美臀av在线| 93久久精品日日躁夜夜躁欧美| 国产一区二区丝袜| 加勒比色综合久久久久久久久 | 亚洲国产婷婷香蕉久久久久久99| 999国产精品永久免费视频app| 午夜精品99久久免费| 国产精品久久久久久妇女| 91久久综合| 国产精品国产福利国产秒拍| 毛片毛片毛片毛片毛片毛片| 精品久久影视| 欧美韩日一区二区| 亚洲精品66| 亚洲欧美乱综合| 久久黄色免费看| 精品免费一区二区| 国产91在线视频| 91网在线播放| 欧美日韩免费视频| 91这里只有精品| 在线观看av一区| www.亚洲.com| 欧美日本在线观看| 丝袜美女在线观看| 久久久噜噜噜久噜久久综合| 黄色录像特级片| 精品一区二区精品| 久久国产精品电影| 你懂的好爽在线观看| 色菇凉天天综合网| 水蜜桃亚洲精品| 麻豆一二三区精品蜜桃| 按摩亚洲人久久| 国产特级淫片免费看| 一区二区三区在线影院| 日本fc2在线观看| 日本韩国欧美国产| 97在线超碰| 欧美另类老女人| 国产91久久精品一区二区| 91色在线视频| 免费看黄裸体一级大秀欧美| 亚洲三区在线观看| 国产在线观看91一区二区三区| 国产欧美精品va在线观看| 五月天久久网站| 久久精品ww人人做人人爽| 美女网站视频久久| 97国产成人精品视频| 精品久久美女| 日本一区二区免费看| 成人h动漫精品| 五月天婷婷综合社区| 欧美性猛交xxxxx水多| 成人免费a级片| 欧美1区2区| 亚洲精品久久区二区三区蜜桃臀| 成人永久aaa| 成年人视频在线网站| 91精品国产色综合久久久蜜香臀| 在线观看的毛片| 美女诱惑一区| 久操网在线观看| 亚洲h在线观看| 手机在线理论片| 日本久久久久久久久久久| 亚洲国产电影| 国产又黄又猛又粗| 欧美一区二区成人6969| 日韩精品一区二区三区中文字幕| 动漫一区二区在线| 国产精品探花在线观看| 美女视频久久| 久久久.com| 天堂av在线电影| 国产成人综合久久| 国产一区二区三区黄网站| www日韩av| 97久久超碰国产精品| chinese偷拍一区二区三区| 在线视频日韩精品| 欧美色综合网| 日本国产精品视频| 性色一区二区三区| 91黑丝在线| 国产一区二区精品丝袜| 正在播放日韩欧美一页| 国产成人精品日本亚洲| 久久国产夜色精品鲁鲁99| 免费观看一二区视频网站| 亚洲视频在线播放| 黄网页免费在线观看| 不卡伊人av在线播放| 久久精品亚洲| 女人体1963| 日韩中文字幕久久| 亚洲欧美视频一区二区三区| 国产午夜视频| 久久这里只有精品99| 蜜桃精品视频在线| 欧美孕妇孕交| 日韩美女福利视频| 久久久久久久久久久99999| 美女av在线免费看| 玖玖玖精品中文字幕| 欧美日韩国产精品一区二区三区四区| 青檬在线电视剧在线观看| 深夜福利国产精品| 日韩av一区二| av在线资源站| 成人免费福利视频| 欧美1区2区| 日韩欧美亚洲| 欧美极品美女电影一区| 懂色av一区二区三区蜜臀| 色操视频在线| 久久精彩视频| 欧美综合天天夜夜久久| 国产精品欧美在线观看| 另类小说色综合| 精品国产一区二区三区在线观看 | 毛片精品免费在线观看| 久久激五月天综合精品| 99在线播放| 国产专区一区二区| 日日夜夜精品视频免费| 男同互操gay射视频在线看| 欧美日韩美女一区二区| 亚洲女同中文字幕| 在线国产1区| 日韩视频免费观看高清在线视频| 亚洲中无吗在线| 少妇性bbb搡bbb爽爽爽欧美| 国产精品成人品| 亚洲一区二区三区美女| 黄色不卡一区| 亚洲人成电影| 国产视频在线观看一区| 欧美久久久久久久久| 三级中文字幕在线观看| 日韩不卡av| 亚洲国产小视频在线观看| 久久99久久精品| 97成人资源| 免费成人午夜视频| 黑人巨大精品欧美一区二区| 青青草91久久久久久久久| 青娱乐一区二区| 精品国产91洋老外米糕| 美女网站在线免费欧美精品| 成人在线高清免费| 女同性恋一区二区| 俺去啦;欧美日韩| 久久色中文字幕| 国产精品久av福利在线观看| 含羞草激情视频| 国产精品嫩草在线观看| 成人动漫一区二区三区| 日韩视频一区二区三区四区| 国产bdsm| 精品国产免费一区二区三区| 亚洲国产毛片完整版| 成人av高清在线| 成人资源在线播放| 青青草在线免费视频| 日韩三级在线播放| 久久av红桃一区二区小说| 亚洲啪啪综合av一区二区三区| 图片区小说区亚洲| 99久re热视频精品98| 欧美国产在线视频| 色婷婷国产精品| 国产在线观看免费一区| 开心激情综合| 午夜免费视频在线国产| 日韩精品一区二区三区电影| 91精品国产沙发| 欧美一区二区三区成人| 91丨porny丨最新| 欧美不卡视频| 免费视频成人| 激情在线视频| www污在线观看| 成人字幕网zmw| 日韩精品视频在线观看网址| 国产精品国产自产拍在线| 在线亚洲观看| 国产精品jk白丝蜜臀av小说| 国产在线视频网站| 香港三级韩国三级日本三级| 91视频国产一区| 伊人青青综合网站| 动漫精品一区二区| www.66久久| 乡村艳史在线观看| 亚洲精品少妇久久久久久 | 久久久国产精华液999999|