Corejava sort

第四章
1)排序問題
    冒泡排序: 對兩個相鄰的數據進行比較,如果前一個數據比
           後一個數據大,就交換位置,最多執行length-1趟
    比較,每趟比較的次數最多爲length-i-1
     選擇排序:每次把比較的第一個個數當做是最小數,如果找到後面有比
  自己小的數,就記錄位置,比較完之後交換這兩個數
  的位置。
     使用java.util.Arrays中sort()方法和binarySearch()方法
       Arrays.sort(數組的引用) :進行排序
       int Arrays.binarySearch(數組的引用,數據):
              該數句在數組的下標.但是該方法
       必須在數組排序之後使用。
2)二維數組(隨機點名系統,學生的位置x,y)
   存放一維數組的數組
   int[][] a = new int[2][3];
   a[0].length
   a.length

   int[][]
   int[][][]
a)管理學生寢室
   管理每層樓學生的信息
   MultiArray.java     
b)輸出方正矩形:
  0 2 2 2 2 2
  1 0 2 2 2 2
  1 1 0 2 2 2
  1 1 1 0 2 2
  1 1 1 1 0 2
  1 1 1 1 1 0

c)輸出10行楊輝三角
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
............

鋸齒形數組

3)System.arraycopy()
    數組的長度一旦定義了,就無法修改。
    所以需要arraycopy()來重新分配一個新的數組,
    然後將其內容拷貝進去。
   int[] a = new int[5];
   int[] b = new int[5];
   a=b與System.arraycopy(a,0,b,0,5)有什麼區別?
   比如說我將a[1]=2;請問b[1]的值是多少?

4)使用數組模擬隊,先進先出
   1/3的需求分析
   1/3的coding
   1/3的測試
 class Queue(){
      //入隊
      void add(int value){}
      //出隊
      int remove(){}
      //當前隊中元素個數
      int size()
      //輸出類型
      void print()
 }

 class Student{}是以屬性爲主的類
 class Queue{}是以方法爲主的類


5)可變長參數 ...  參數的個數可變
兩個int相加?
public int add(int a,int b){}
三個int相加?
public int add(int a,int b,int c){}
四個int相加?
public int add(int a,int b,int c,int d){}
五個int相加?
public int add(int a,int b,int c,int d,int e){}
..........
上面的方案代碼非常冗餘。類似的代碼重複寫。
jdk1.5之前的解決方案:通過數組解決的
 public int add(int[] a){
 }

add(new int[]{5,8,9});
add(new int[]{5,8});


缺點:每次都要創建新的數組,
    創建數組需要在堆區開闢連續的內存空間。
    參數調用之後該變量就沒用了,這樣會
    浪費內存空間。
jdk1.5之後的解決方案:通過...解決的
 public int add(int... a){
 }
調用: add(1,4);
      add(1,4,6);
      add(7,6,8,89,76);

注意:1)可變長參數的使用和數組的使用是一樣
     2)一個方法中只能定義一個可變長參數,
       並且要定義最後一個參數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章