java 基礎知識-數組的7種算法(排序、求和、最值、遍歷...)


遍歷

遍歷就是把這個數組的每個元素 顯示出來 遍歷的方法就是先定義這個數組的大小,然后用FOR循環來完成數組,例如

double[] score = new double[5];  
Scanner input = new Scanner(System.in);  
  for (int i = 0; i < score.length; i++) {  
      System.out.println("請輸入第" + (i + 1) + "位同學的成績:");  
       score[i] = input.nextDouble();  
    }  
       for (int i = 0; i < 5; i++) {  
           System.out.println(score[i]);  
    }

這個就是一個double 型的數組用for去遍歷每個元素 而結束條件就是這個數組的最后一個數組 score.length就可以遍歷這個數組了

求和

求和就是在遍歷的基礎上添加一個求和的計數器 就在在for外面定義一個和的變量 這個變量的初始值是0 這樣就能達到求和的結果是正確的 求和的公式在for循環里面寫這樣的目的是因為求和也是在循環的往上加的過程 例如

double sum = 0;  
int i;  
  for (i = 0; i < score.length; i++) {  
   sum = sum + score[i];  
  }  
System.out.println(score.length + "位同學的成績是" + sum);

這個就是求和的過程 其他的運算方法就是把這個符號更改下而已

極值

極值的目的就是求一個極端的值 方法就是假定數組里面的一個數據是最大的然后用其他的數據遍歷他與他進行對比 如果新的數據值比這個定義的值大的話那么就替換他的這個位置然后繼續遍歷 遍歷結束后就輸出這個值就是最大的值或者最小的值  例如

double max = score[0];  
      for (i = 0; i < score.length; i++) {  
            if (score[i] > max) {  //這里的大於號變成小於號就可以求最小值了  
                max = score[i];  
              }  
          }  
      System.out.println(i + "位同學的最高成績是" + max);  

這個代碼就是求一個極值而且是最大的內個

查找 

這個功能就是查詢當前的數組是否有你需要的值 就好像你去一個地方去找人是一個意思
查找用到了boolean變量 因為這個功能的目的就是找到與沒找到 換句話來說就是 找到了就是真(或假) 沒找到就是假(或真)
for循環里面寫的if判斷 
判斷方法就是當用戶輸入的值與數組中的某一個值是一樣的那么就輸出 否則(else)就沒找到 輸出不輸出隨便你
還要判斷下用boolean就可以做到 如果是真那么就跳出這個循環並且進入下一個循環 因為boolean在跳出的時候變化成真了 那么在下面的if里面就是以真的形式出現並且輸出
例如

boolean flag = false;  
System.out.println("請輸入您要查找的分數:");  
double findScore = input.nextDouble();  
  for (i = 0; i < score.length; i++) {  
       if (score[i] == findScore) {  
        flag = true;//變真了  
         break;//跳出這個for循環進入下面的if循環  
       }  
   }  
   if (flag) {//由於是上面的boolean變成真了 所以就進入這個if 如果沒找到就跳刀下面的else  
     System.out.println("找到了您所要查找的分數。" + score[i]);  
    } else {  
     System.out.println("沒有找到您所要查找的分數。");  
    } 

倒置

倒置的意思就是最后一個元素變成第一個元素第一個元素變成最后一個
過程就是折中取半
不遍歷整個數組了遍歷一半,那么就/2就可以 但是計算機數數的方法是從0開始的也就是說最后一個值里面是沒有任何意義的 所以要在最后一個值那-1
並且還要定義一個空的變量  因為要用到三步換值(變量) 不定義也可以 
例如

for (i = 0; i < score.length / 2; i++) {  
     double temp = score[i]; //這里是空變量賦值 三步賦值第一步  
     score[i] = score[score.length - 1 - i];//右邊的值賦到左邊那么右邊就變成空的值  
     score[score.length - 1 - i] = temp;//同上  但是這個temp是個臨時的值所以他最后是空的沒有  
  }  
     for (i = 0; i < score.length; i++) {  
       System.out.println(score[i]);  
  } 

排序

排序是引用的JAVA自帶的一個類 所以沒有難度 例如

Arrays.sort(score);//這個代碼就是內個排序的類  
  for (i = 0; i < score.length; i++) {  
      System.out.println(score[i]);  
 }  

插入

插入的意思就是在這個數組中某一個地方插入一個變量(值),但是一旦插入的這個變量進去那么就會對這個數組產生變化所以數組一定要空出多余的地方,並且要對插入進來的 數據進行判斷,判斷結束后還要跳出這個判斷的if,判斷的條件就是:輸入進來的值大於數組里的某一個值並且小於這個值前面的那一個值(num[i]-1)  替換這個值跳出 進入下一個循環

例如

int[] num = new int[6];  
 for (i = 0; i < num.length; i++) {  
      num[i] = input.nextInt();  
 }  
   Arrays.sort(num);  
   System.out.println("輸入您要插入的數:");  
   int insert = input.nextInt();  
   for (i = 0; i < num.length; i++) {  
        if ((insert > num[i]) && (insert < num[i - 1])) {  
          num[i] = insert;  
          break;  
       }  
   }  
    for (i = 0; i < num.length; i++) {  
      System.out.println(num[i]);  
   }  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM