Java編程那些事兒47—數組使用樣本3

來源:互聯網
上載者:User
 

Java編程那些事兒47—數組使用樣本3鄭州遊戲學院 陳躍峰出自:http://blog.csdn.net/mailbomb 6.3.7 數字統計         要求:統計一個整數中出現最多的數字。如果數字個數一樣,則以最大的數字為準,例如1輸出1,121輸出1,23231輸出3。         該題是一個綜合的題目,在實際分析時可以分解成三個問題:1、把整數中的每個數字拆分出來,2、統計拆分出的數字中0-9每個的個數,3、獲得數字個數的最大值。         實現思路:1、 拆分數字:整數和10取餘可以獲得該整數的個位值,然後用該整數除以10可以去掉個位(整數除法),按照這種結構實現迴圈,並把拆分出的數字(也就是餘數)儲存到數組中。2、 統計數字:聲明一個長度是10的整型數組,使用這個數組中的第一個元素儲存數字0出現的次數,第二個元素儲存數字1出現的次數,依次類推。使用迴圈實現數字個數的統計。3、 獲得最大值對應的數字:獲得個數數組中最大值的下標,就是需要的數字。則實現的代碼如下:                  int m = 1232312;                   int[] n = new int[10]; //儲存拆分後的數字                   int num = 0; //儲存拆分出的數字個數                   while(m != 0){ //未拆分完                            n[num] = m % 10;   //獲得個位元字                            num++;             //拆分出的數字個數加1                            m /= 10;           //去掉拆分出的數字                   }                   int[] count = new int[10]; //儲存0-9數字出現的次數                   //統計數字出現的次數                   for(int i = 0;i < num;i++){                            count[n[i]]++;                   }                   //獲得最大值的下標                   int index = 0;                   for(int i = 0;i < count.length;i++){                            if(count[index] <= count[i]){                                     index = i;                            }                   }                   //輸出                   System.out.println(index);在該代碼中,拆分的十進位的數字,首先拆分出個位,並儲存到n數組中,然後通過除10去掉拆分出的數字,繼續執行迴圈,一直運算到m為0時為止,變數num儲存拆分出的數位個數。使用數組count記憶0-9每個數字出現的次數,count[0]儲存0出現的次數,count[1]儲存1出現的次數,依次類推,所以當n[i]的值為幾時,只需要count[n[i]]增加1即可。最後使用迴圈獲得最大數位下標,適用<=進行比較,可以保證當個數相同時取後續的數字,這樣就可以通過迴圈獲得最大數值的下標,按照數組count的結構,數組的下標和就是數位值。 6.3.8 數組編碼         要求:設有一數組A,長度是N,內部的資料是0到N-1之間的所有數字,例如當N等於5時,數組為:A={0,3,2,1,4}。針對A數組,有一個對應的編碼數組B,B的長度和A的長度相等,規定數組B中元素的值規定如下:a、 B[0]的值為0b、 B[i]的值是A數組中A[i]以前的值中比A[i]小的元素的個數。c、 例如樣本中A數組{0,3,2,1,4}對應的編碼數組B的值為{0,1,1,1,4}。現在已知A數組,編碼代碼計算對應的編碼數組B。該題是一個基本的數組變換題目,只要熟悉了題目的要求以後,按照題目的要求求解對應的數組B即可。實現思路:初始化一個長度和A數組一樣的B數組,初始化第一個元素的值為0,迴圈統計比A[i]元素小的數字個數,把個數值賦值給對應的B[i]即可。則實現的代碼如下:         int[] A = {0,3,2,1,4};         int[] B = new int[A.length];         B[0] = 0; //初始化第一個元素,可選         for(int i = 1;i < A.length;i++){                  int count = 0; //計數變數                  //統計小於A[i]元素的數量                  for(int j = i - 1;j >= 0;j--){                            if(A[j] < A[i]){                                     count++;                            }                  }                  B[i] = count;   //賦值         }該代碼中,按照數組B中值的規定,統計A[i]以前比A[i]小的元素個數,然後把得到的結果賦值給B[i]即完成題目的要求。 6.3.9 數組排序         要求:將數組中的元素按照從小到大的順序(升序)進行排列。         數組的排序是實現很多數組操作的基礎,在實際使用時也有很多的排序方法,這裡以冒泡排序為例來說明數組的排序演算法。         實現思路:每次排序一個元素,總的排序次數是數組的長度減1次。第一次時,首先比較第一個和第二個元素,如果第一個元素比第二個元素大,則交換這兩個元素的值,然後比較第二個和第三個元素,如果第二個比第三個大則交換,依次類推,這樣當第一次交換完成以後,數組中的最後一個元素一定是數組中最大的元素。第二次時,只比較數組的前長度減一個元素,比較步驟和第一次相同,依次類推,每次都少比較一個元素,最終獲得的就是排序完成的數組。         則實現的代碼如下:                   int[] m = {2,10,3,4,2};                   for(int i = 0;i < m.length - 1;i++){ //排序次數                            //兩兩比較,實現排序                            for(int j = 0;j < m.length - 1 - i;j++){                                     if(m[j] > m[j + 1]){                                               //交換                                               int temp = m[j];                                               m[j] = m[j + 1];                                               m[j + 1] = temp;                                     }                            }                   }                   //輸出排序後的元素                   for(int i = 0;i < m.length;i++){                            System.out.println(m[i]);                   }         冒泡排序通過數組中元素的兩兩比較和交換,實現數組中元素的排序。其中迴圈變數為i的迴圈代表排序的次數,總的排序次數是數組的長度減1次。內部的迴圈變數為j的迴圈實現未排序元素的兩兩比較,其中迴圈條件可以保證i增加1,內部比較的元素減少1,這個在功能上就是不比較排過序的元素。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.