posts - 167,  comments - 30,  trackbacks - 0

          Java

          //冒泡排序(升序和降序) 兩層循環,外層排序控制,【內層排序比較大小,交換位置】
              public static int[] bubbleSort(int[] arr){
                  
          for (int i = 0; i < arr.length - 1; i++{
                      
          for (int j = 0; j < arr.length - i - 1 ; j++{
                          
          if(arr[j] > arr[j + 1]){
                              
          int temp = arr[j];
                              arr[j] 
          = arr[j + 1];
                              arr[j 
          + 1= temp;
                          }

                      }

                      
          //最大元素找到
                      System.out.println("" + (i + 1+ "趟排序");
                      
          for (int k = 0; k < arr.length; k++{
                          System.out.println(arr[k] 
          + " ");
                      }

                   }

                  
          return arr;
              }

           二分查找理論實踐參考

           http://www.sunchis.com/html/java/2011/0426/323.html

          public static void main(String[] args) {
                  
          int[] arr = new int[]{2,3,6,4,8,5,9,11,15,12,14,13};
                  
          int value = 9;
                  
          //System.out.println(directSerach(arr, 18));
                  
                  arr 
          = MaoPaoSortTest.bubbleSort(arr);
                  binarySerach(arr, 
          18);
              }

              
              
          /**
               * 直接查找 優點:很好理解,適合數據量小的查找 缺點:數據量大速度很慢. 降低查找效率
               
          */

              
          public static int directSerach(int[] arr, int value){
                  
          for (int i = 0; i < arr.length; i++{
                      
          if(value == arr[i]){
                          
          return i;
                      }

                  }

                  
          return -1;
              }

              
              
          /**
               * 二分查找方法 待查找的數組要有序.將有序數組一分為二
               * 定義最小索引值low、最大索引值high、定義中間索引值middle.
               * while(condition), condition low<=high
               * 根據最大索引值和最小索引值計算中間值索引值middle,并將arr[middle]值與value比較.
               * 1.如果value等于arr[middle],則直接返回middle索引值.
               * 如果value大于arr[middle],則數組分隔的左側過濾掉.將low索引值重置:middle+1
               * 如果value小于arr[middle],則數組分隔的右側過濾掉.將high索引值重置:middle-1
               
          */

              
          public static int binarySerach(int[] arr, int value){
                  
          int low = 0//最小下標索引
                  int high = arr.length; //最大下標索引
                  int middle = 0//中間索引
                  while (low <= high) {
                      middle 
          = (high + low) / 2;
                      
                      
          //test
                      for (int i = 0; i < arr.length; i++{
                          System.out.print(arr[i]);
                          
          if(i == middle){
                              System.out.print(
          "#");
                          }

                          System.out.print(
          " ");
                      }

                      System.out.println();
                      
                      
          if(value == arr[middle]){
                          
          return middle;
                      }

                      
          if(value < arr[middle]){
                          high 
          = middle - 1;
                      }

                      
          if(value > arr[middle]){
                          low 
          = middle + 1;
                      }

                  }

                  
          return -1;
              }


          posted on 2012-01-14 15:39 David1228 閱讀(245) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
          博客園   IT新聞   Chat2DB   C++博客   博問  
           

          <2012年1月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章檔案

          新聞分類

          新聞檔案

          相冊

          收藏夾

          Java

          Linux知識相關

          Spring相關

          云計算/Linux/虛擬化技術/

          友情博客

          多線程并發編程

          開源技術

          持久層技術相關

          搜索

          •  

          積分與排名

          • 積分 - 359440
          • 排名 - 154

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 曲阳县| 宝丰县| 孙吴县| 新兴县| 临朐县| 江山市| 凌云县| 宜兰市| 广德县| 益阳市| 双牌县| 浦北县| 买车| 襄汾县| 辽阳县| 元氏县| 墨脱县| 冕宁县| 神农架林区| 台东县| 汉中市| 龙岩市| 虎林市| 东丰县| 时尚| 丹江口市| 吉林省| 沅江市| 施秉县| 三明市| 河池市| 三江| 富锦市| 武城县| 玉溪市| 元江| 秦安县| 荔浦县| 子洲县| 拉孜县| 洛南县|