日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

数据结构(1)有序表查找

發布時間:2023/11/27 生活经验 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构(1)有序表查找 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?有序表查找

	/*  主函數  */public class OrderTableSearch {public static void main(String[] args) {int [] a= {0,1,16,24,35,47,59,62,73,88,99};	System.out.println(FibonacciSearch(a, 10, 88));System.out.println(InsertKeySearch(a, 10, 88));System.out.println(BinarySearch(a, 10, 88));}

一、折半查找?

		/* 折半查找  *//* 輸出:9 */static int BinarySearch(int [] a, int n, int key){int low, high, mid;low = 0;high = n;while(low <= high){mid = (low + high) / 2; /* 折半  */if (key < a[mid]){high = mid - 1;}else if (key > a[mid]){low = mid + 1;}else return mid;}return 0;}

二、插值查找?

		/* 插值排序 *//* 輸出:9 */static int InsertKeySearch(int [] a, int n, int key){int low, high, mid;low = 0;high = n;while(low <= high){/* 插值查找的計算公式 */mid = low + (high - low)*(key - a[low])/(a[high] - a[low]);if (key < a[mid]){high = mid - 1;}else if (key > a[mid]){low = mid + 1;}else return mid;}return 0;}

三、斐波那契查找?

		/* 斐波那契排序 *//* 輸出:9 */static int FibonacciSearch(int [] a, int n, int key){int [] F = {0,1,1,2,3,5,8,13,21,34};int low, high, mid, i, k;low = 1;high = n;k = 0;while (n > F[k]-1) /* 計算n位于斐波那契數列的位置 */k++;while (low <= high) {mid = low + F[k-1] -1;if (key < a[mid]){high = mid - 1;k = k - 1;}else if (key > a[mid]){low = mid + 1;k = k - 2;}else {if (mid <= n)return mid;elsereturn n;}}return 0;}

四、三種查找方法的比較

  平均性能:斐波那契>折半>插值,因為折半查找是加法與除法的運算,插值為四則運算,斐波那契加減運算。

  

?

轉載于:https://www.cnblogs.com/danbing/p/5128089.html

總結

以上是生活随笔為你收集整理的数据结构(1)有序表查找的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。