課程:《Java軟件結構與數據結構》html
班級: 1723java
姓名: 王文彬linux
學號:20172329git
實驗教師:王志強算法
實驗日期:2018年11月19日vim
必修/選修: 必修bash
過程數據結構
結果:編輯器
過程ide
結果:
過程
(1)斐波那契查找
public static boolean fibonacciSearch(int[] table, int keyWord) { int i = 0; while (getFibonacci(i) - 1 == table.length) { i++; } int low = 0; int height = table.length - 1; while (low <= height) { int mid = low + getFibonacci(i - 1); if (table[mid] == keyWord) { return true; } else if (table[mid] > keyWord) { height = mid - 1; i--; } else if (table[mid] < keyWord) { low = mid + 1; i =i- 2; } } return false; } public static int getFibonacci(int n) { int res = 0; if (n == 0) { res = 0; } else if (n == 1) { res = 1; } else { int first = 0; int second = 1; for (int i = 2; i <= n; i++) { res = first + second; first = second; second = res; } } return res; }
咱們在高中就接觸過斐波那契這我的,由於咱們學過一種數列叫作斐波那契數列,其中就像這樣的數列是斐波那契數列:1,1,2,3,5,8,13......., 第三個數字是前兩個數字的和,由於這樣一個數列在無窮的時候前一個數除之後面的數字會無限接近於0.618,也就是咱們的黃金分割數,一樣這個算法的原理也就是基於二分進行開展的,所以咱們的這個新的算法斐波那契查找一樣用的也是這個原理,依次進行二分,查找這樣目標,這樣能夠最大限度的節省效率,速度很快。
結果:
過程
public static String Heap(Integer[] a){ ArrayHeap q =new ArrayHeap(); String result=""; for (int i =0;i<a.length;i++){ q.addElement(a[i]); } for (int i =0;i<a.length;i++){ result+=q.removeMax()+" "; } return result; }
二、希爾排序
public static String xiersort(Integer []arr){ for(int gap=arr.length/2;gap>0;gap/=2){ for(int i=gap;i<arr.length;i++){ int j = i; while(j-gap>=0 && arr[j]<arr[j-gap]){ swap(arr,j,j-gap); j-=gap; } } } return (Arrays.toString(arr)); }
三、二叉樹排序
public static String Seachtree(Integer[] a){ LinkedBinarySearchTree c =new LinkedBinarySearchTree(); for (int i =0;i<a.length;i++){ c.addElement(a[i]); } String result=""; for (int i =0;i<a.length;i++){ result+=c.removeMin()+" "; } return result; }
由於這幾個方法都比較容易簡單理解而且編寫過程耗費時間較少,因此在這裏就不進行詳細的分析了,相信你們也都可以理解其中的原理,在這裏我須要提一點的是,希爾排序,這個排序不知道你們還有沒有印象,就是在咱們學習排序和查找這一章節的時候,課後習題有一道讓咱們編寫叫作間接排序法,這樣一道題,其實這兩個算法有殊途同歸之處,在我以前看到的一篇文章裏這樣講,希爾排序是帶有權重(也就是那個間隔)的直接排序,而間隔排序就是帶有間隔的選擇排序法,因此,在我編寫此次的代碼的時候,就能夠找到當時寫那個做業的時候的感受,雖然上次那個題目有問題,最後也不知道如何解決了,可是當咱們按照題意編寫的時候,老是感受有地方有問題,因此在這裏再提醒一下本身不要忘記當時的問題。
結果:
過程
圖1
圖2
圖3
又是接近了期末,本身最近由於事情愈來愈多,打亂了本身的安排,但願本身能夠找到節奏,繼續加油!
[Data Structure & Algorithm] 七大查找算法
Android Studio的git功能的使用介紹