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

遍歷

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

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就能夠遍歷這個數組了java

求和

求和就是在遍歷的基礎上添加一個求和的計數器 就在在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);

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

極值

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

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

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

查找 

這個功能就是查詢當前的數組是否有你須要的值 就好像你去一個地方去找人是一個意思
查找用到了boolean變量 由於這個功能的目的就是找到與沒找到 換句話來講就是 找到了就是真(或假) 沒找到就是假(或真)
for循環裏面寫的if判斷 
判斷方法就是當用戶輸入的值與數組中的某一個值是同樣的那麼就輸出 不然(else)就沒找到 輸出不輸出隨便你
還要判斷下用boolean就能夠作到 若是是真那麼就跳出這個循環而且進入下一個循環 由於boolean在跳出的時候變化成真了 那麼在下面的if裏面就是以真的形式出現而且輸出
例如
blog

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自帶的一個類 因此沒有難度 例如
input

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

插入

插入的意思就是在這個數組中某一個地方插入一個變量(值),可是一旦插入的這個變量進去那麼就會對這個數組產生變化因此數組必定要空出多餘的地方,而且要對插入進來的 數據進行判斷,判斷結束後還要跳出這個判斷的if,判斷的條件就是:輸入進來的值大於數組裏的某一個值而且小於這個值前面的那一個值(num[i]-1)  替換這個值跳出 進入下一個循環it

例如

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]);  
   }  
相關文章
相關標籤/搜索