李敏  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統(tǒng)計(jì)
          • 隨筆 - 1
          • 文章 - 40
          • 評(píng)論 - 4
          • 引用 - 0

          導(dǎo)航

          常用鏈接

          留言簿(1)

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          它山之石

          聚賢莊

          搜索

          •  

          最新評(píng)論

           
          需求:
          從數(shù)組A和數(shù)組B中找出相同的數(shù)(每個(gè)數(shù)組中沒有重復(fù)數(shù))

          思路:
          1  借鑒查表法,把每個(gè)數(shù)組中數(shù)值映射成一個(gè)大數(shù)組的下標(biāo)值。
          2  然后遍歷兩個(gè)目標(biāo)數(shù)組,對(duì)映射到的大數(shù)組中的值進(jìn)行累加。
          3  最后遍歷大數(shù)組,得到數(shù)值=2的那些索引,即兩個(gè)數(shù)組中相同的數(shù)。
          4  大數(shù)組的長(zhǎng)度為數(shù)組A和數(shù)組B中最大的那個(gè)數(shù)

          模塊:
          Demo.java 統(tǒng)計(jì)
          public void twoArrayNumCount() 對(duì)兩個(gè)數(shù)組進(jìn)行統(tǒng)計(jì)
          public getArrayNumCount():int [] 返回統(tǒng)計(jì)的結(jié)果
          private void initTableArray() 初始化統(tǒng)計(jì)數(shù)組
          private void arrayNumCount(array:int []) 統(tǒng)計(jì)一個(gè)數(shù)組中的每個(gè)數(shù)字的個(gè)數(shù)

          ArrayPrint.java 打印
          void print(array:int []) 打印統(tǒng)計(jì)好的數(shù)組(整個(gè)數(shù)組中數(shù)值等于2的數(shù)組索引)

          ArrayUtil.java 數(shù)組處理
          public static getArrayMaxNum(int [] array):int 查找一個(gè)數(shù)組中的最大數(shù)
          public static getTwoArrayMaxNum(int [] array1,int []array2):int 求出兩個(gè)數(shù)組中的最大數(shù)

          測(cè)試
          TestDemo.java 測(cè)試統(tǒng)計(jì)(Demo.java)
          TestArrayUtil.java 測(cè)試數(shù)組處理(ArrayUtil.java)
          TestArrayPrint.java 測(cè)試打印(ArrayPrint.java)


          主功能模塊實(shí)現(xiàn):
          (一)構(gòu)造大數(shù)組
          用兩個(gè)數(shù)組中的那個(gè)最大數(shù)來設(shè)定大數(shù)組的長(zhǎng)度
          查找數(shù)組中的最大數(shù)
          (二)統(tǒng)計(jì)
          遍歷兩個(gè)數(shù)組,對(duì)大數(shù)組索引(兩個(gè)數(shù)組的值)進(jìn)行累加


          代碼:
          Demo.java
          /**
           * 統(tǒng)計(jì)
           * 
           * 
          @author MinLi
           * 
           
          */

          public class Demo {
              
          // 統(tǒng)計(jì)數(shù)組
              private int[] tableArray;

              
          private int[] array1;

              
          private int[] array2;

              
          public Demo(int[] array1, int[] array2) {
                  
          this.array1 = array1;

                  
          this.array2 = array2;

                  initTableArray();
              }


              
          /**
               * 初始化統(tǒng)計(jì)數(shù)組(這里它的長(zhǎng)度是由兩個(gè)數(shù)組中的最大值+1)
               
          */

              
          private void initTableArray() {
                  
          int arrayMaxNum = ArrayUtil.getTwoArrayMaxNum(array1, array2);

                  tableArray 
          = new int[arrayMaxNum + 1];
              }


              
          /** */
              
          /**
               * 統(tǒng)計(jì)一個(gè)數(shù)組中的每個(gè)數(shù)字的個(gè)數(shù)
               
          */

              
          private void arrayNumCount(int[] array) {
                  
          for (int num : array) {
                      tableArray[num] 
          += 1;
                  }

              }


              
          /**
               * 返回統(tǒng)計(jì)的結(jié)果
               * 
               * 
          @return
               
          */

              
          public int[] getArrayNumCount() {
                  
          return tableArray;
              }


              
          /**
               * 統(tǒng)計(jì)兩個(gè)數(shù)組中的每個(gè)數(shù)字的個(gè)數(shù)
               * 
               * 
          @param array1
               * 
          @param array2
               
          */

              
          public void twoArrayNumCount() {
                  arrayNumCount(array1);

                  arrayNumCount(array2);
              }

          }

          ArrayUtil.java
          /**
           * 數(shù)組處理
           * 
           * 
          @author MinLi
           * 
           
          */

          public class ArrayUtil {
              
          /** */
              
          /**
               * 查找一個(gè)數(shù)組中的最大數(shù)
               
          */

              
          public static int getArrayMaxNum(int[] array) {
                  
          int max = array[0];

                  
          for (int num : array) {
                      
          if (max < num)
                          max 
          = num;
                  }

                  
          return max;
              }


              
          /** */
              
          /**
               * 求出兩個(gè)數(shù)組中的最大數(shù)
               
          */

              
          public static int getTwoArrayMaxNum(int[] array1, int[] array2) {
                  
          int array1Max = getArrayMaxNum(array1);

                  
          int array2Max = getArrayMaxNum(array2);

                  
          return array1Max > array2Max ? array1Max : array2Max;
              }

          }


          ArrayPrint.java
          /**
           * 數(shù)組打印
           * 
           * 
          @author MinLi
           * 
           
          */

          public class ArrayPrint {
              
          /**
               * 打印整個(gè)數(shù)組中值等于2的數(shù)組索引
               * 
               * 
          @param array
               
          */

              
          public static void print(int[] array) {
                  
          int arrayLength = array.length;

                  
          for (int index = 0; index < arrayLength; index++{
                      
          int num = array[index];

                      
          if (num == 2)
                          System.out.println(index);
                  }

              }

          }


          TestDemo.java
          /**
           * 測(cè)試Demo類
           * 
           * 
          @author MinLi
           * 
           
          */

          public class TestDemo {
              
          private void service() {

                  test_arrayNumCount();

                  test_twoArrayNumCount();
              }


              
          /** */
              
          /**
               * 測(cè)試twoArrayNumCount方法
               
          */

              
          private void test_twoArrayNumCount() {
                  
          int array1[] = 1311 };
                  
          int array2[] = 39 };

                  Demo demo 
          = new Demo(array1, array2);

                  demo.twoArrayNumCount();

                  
          int[] tableArray = demo.getArrayNumCount();

                  ArrayPrint.print(tableArray);
              }


              
          /** */
              
          /**
               * 測(cè)試arrayNumCount方法
               
          */

              
          private void test_arrayNumCount() {
                  
          int array1[] = 1311 };
                  
          int array2[] = 29 };

                  
          // 這里為了測(cè)試把a(bǔ)rrayNumCount方法設(shè)為public
                  /** */
                  
          /**
                   * Demo demo = new Demo(array1, array2);
                   * 
                   * demo.arrayNumCount(array1);
                   * 
                   * int[] tableArray = demo.getArrayNumCount();
                   * 
                   * ArrayPrint.print(tableArray);
                   
          */

              }


              
          public static void main(String[] args) {
                  
          new TestDemo().service();
              }

          }


          TestArrayUtil.java
          /**
           * 測(cè)試ArrayUtil類
           * 
           * 
          @author MinLi
           * 
           
          */

          public class TestArrayUtil {

              
          public static void main(String[] args) {
                  
          new TestArrayUtil().service();
              }


              
          private void service() {
                  test_getTwoArrayMaxNum();

                  test_getArrayMaxNum();
              }


              
          /** */
              
          /**
               * 測(cè)試ArrayUtil類中的getArrayMaxNum方法
               
          */

              
          private void test_getArrayMaxNum() {
                  
          int arrays[] = 136 };

                  System.out.println(ArrayUtil.getArrayMaxNum(arrays));
              }


              
          private void test_getTwoArrayMaxNum() {
                  
          int array1[] = 1311 };
                  
          int array2[] = 29 };

                  
          int maxNum = ArrayUtil.getTwoArrayMaxNum(array1, array2);

                  System.out.println(maxNum);
              }

          }


          TestArrayPrint.java
          /**
           * 測(cè)試ArrayPrint類
           * 
           * 
          @author MinLi
           * 
           
          */

          public class TestArrayPrint {

              
          public static void main(String[] args) {
                  
          new TestArrayPrint().service();
              }


              
          private void service() {
                  test_print();
              }


              
          /** */
              
          /**
               * 測(cè)試ArrayPrint類中的print方法
               
          */

              
          private void test_print() {
                  
          int array1[] = 112 };

                  ArrayPrint.print(array1);
              }

          }

          posted on 2010-09-08 22:12 李敏 閱讀(3332) 評(píng)論(0)  編輯  收藏 所屬分類: 算法
           
          Copyright © 李敏 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 恩平市| 凤翔县| 资阳市| 香格里拉县| 会泽县| 博白县| 平乡县| 鹤壁市| 麦盖提县| 江西省| 梅州市| 长白| 新巴尔虎右旗| 新巴尔虎左旗| 巫山县| 屯门区| 永和县| 阿勒泰市| 柳河县| 英吉沙县| 三穗县| 浦北县| 文登市| 黑龙江省| 承德县| 曲麻莱县| 珲春市| 秀山| 日土县| 德兴市| 论坛| 峡江县| 吉木乃县| 营口市| 施甸县| 高陵县| 林西县| 宁国市| 三门峡市| 昌黎县| 铜山县|