课程:《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功能的使用介绍