在希臘帕爾納斯山南坡上,有一個(gè)馳名世界的戴爾波伊神托所,在它的入口處的巨石上赫然銹刻著這樣幾個(gè)大字: 認(rèn)識(shí)你自己!

          像丁香花一樣靜靜的等待

             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            21 隨筆 :: 2 文章 :: 32 評(píng)論 :: 0 Trackbacks

          ?? 從數(shù)組中查找特定數(shù)據(jù)的最簡(jiǎn)單辦法就是遍歷數(shù)組中所有的元素,這種查找方式稱為線性查找。對(duì)于小型數(shù)組或者是沒(méi)有經(jīng)過(guò)排序的數(shù)組的可以采用這樣的辦法,對(duì)于已經(jīng)排序的數(shù)組可以采用高效的二叉查找算法。該算法查找數(shù)組中位于中間位置的元素,并將其與查找值比較,如果兩者相等就返回該元素的索引,否則將問(wèn)題化簡(jiǎn)為查找元素的一半來(lái)處理。

          ??? class ArrayFinder{

          ? public static void print(int[] array,int middle){
          ???? for(int i=0;i<array.length;i++){
          ??????? System.out.print(array[i]);
          ??????? if(i == middle)System.out.print("*");
          ??????? System.out.print(" ");
          ???? }
          ???? System.out.println();
          ? }
          ?
          ? public static int indexOf(int[] array,int value){
          ???? int low = 0;
          ???? int high = array.length-1;
          ???? int middle;
          ???? while(low <= high){
          ??????? middle = (low + high)/2;
          ??????? print(array,middle);
          ??????? if(array[middle] == value) return middle;
          ???????
          ??????? if(value < array[middle]) //要比較的值比中間值小
          ?????????? high = middle +1;
          ??????? else
          ?????????? low = middle - 1;
          ???? }
          ???? return -1;
          ? }
          ? public static void main(String[] args){
          ??? int[] array = new int[]{1,2,3,4,6,9,12};
          ??? System.out.println("location of 13: "+indexOf(array,4));
          ? }
          ?
          }

          Result :
          D:\jcode>javac ArrayFinder.java

          D:\jcode>java ArrayFinder
          1 2 3 4* 6 9 12
          location of 13: 3

          posted on 2007-03-02 12:04 dyin 閱讀(1523) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # re: 數(shù)組的二叉查找算法【java description】 2007-06-09 03:14 蠶豆
          呵呵 不太理解 真是慚愧  回復(fù)  更多評(píng)論
            

          # re: 數(shù)組的二叉查找算法【java description】 2007-09-23 14:41 vvv
          把數(shù)組的查找算法 總結(jié)一下   回復(fù)  更多評(píng)論
            

          # re: 數(shù)組的二叉查找算法【java description】 2008-05-19 20:43 何維
          如果你這個(gè)能執(zhí)行出正確的結(jié)果,那就鬼見(jiàn)愁了。
          if(value < array[middle]) //要比較的值比中間值小
          high = middle +1;
          else
          low = middle - 1;
          應(yīng)改為
          if(value < array[middle]) //要比較的值比中間值小
          high = middle -1;
          else
          low = middle + 1;
            回復(fù)  更多評(píng)論
            

          # re: 數(shù)組的二叉查找算法【java description】[未登錄](méi) 2010-08-22 10:50 test
          這個(gè)是二分  回復(fù)  更多評(píng)論
            


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 澜沧| 台东市| 稷山县| 吴旗县| 长乐市| 谢通门县| 买车| 乐东| 陆川县| 鄯善县| 始兴县| 平湖市| 玉田县| 弥渡县| 永泰县| 英吉沙县| 台南县| 莆田市| 弥勒县| 富锦市| 兴义市| 克东县| 建始县| 囊谦县| 滦平县| 南平市| 大田县| 大足县| 商洛市| 翁牛特旗| 太湖县| 建湖县| 嵊泗县| 新泰市| 当阳市| 灵宝市| 海宁市| 曲周县| 宜宾市| 颍上县| 海晏县|