<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## Java編程那些事兒47—數組使用示例3 鄭州游戲學院 陳躍峰 出自:[http://blog.csdn.net/mailbomb](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]的值為0 b、?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,這個在功能上就是不比較排過序的元素。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看