折半查找, 又稱二分查找( ), 需要數組有序(sort), 通過比較數組的中間數據(中心偏向較小的方法), 確定查找值的范圍; 直到中值等于查找值, 則查找成功; 如果未成功, 則重置數據, 判斷首尾位置的大小, 再進行中值比較; 判斷失敗, 則數據不存在; 注
折半查找, 又稱二分查找( ), 需要數組有序(sort), 通過比較數組的中間數據(中心偏向較小的方法), 確定查找值的范圍;
直到中值等于查找值, 則查找成功; 如果未成功, 則重置數據, 判斷首尾位置的大小, 再進行中值比較; 判斷失敗, 則數據不存在;
注意:
1. 無法重定向()輸入文件(file), 只能讀入數據;
2. 使用cmd重定向輸入文件, 則需要解壓".jar", 取出相應的class(In, Out, StdIn, ), 放入執行目錄, 否則會報錯:
錯誤: java.lang., 即找不到相應的class文件, 會出現可以執行, cmd不能執行的情況;
代碼主要功能: 判斷是否查找成功, 失敗則輸出查找數據;
命令行: java - D:.jar; tinyW.txt < tinyT.txt
代碼如下:
/* * .java * * on: 2013.12.02 *: Wendy *//* std , .jar*/ java.util.; class {/*折半查找算法( )*/ int rank(int key, int[] a){int lo = 0;int hi = a. - 1;while (lo a[mid]) lo = mid + 1;else mid;} -1;} void main([] args){In in = new In(args[0]);int[] = in.(); //讀取原始數組.sort(); //排序while(!StdIn.()) //判斷重定向數據是否為空{int key = StdIn.();if(rank(key, ) == -1) //輸出不存在的數據.(key);}} }
輸出:
,