黑馬程序員 Java基礎 數組及排序

               -------android培訓java培訓期待與您交流 ----------

   (1)存儲同一種數據類型的多個元素的容器。
   (2)數組的特點:
                  每一個元素都有編號,從0開始編號。
   (3)數組的格式:
          A:數據類型[] 數組名 = new 數據類型[元素個數];
            例:int[] arr = new int[3];
           創建了一個int數組,arr。可以存儲3個int類型的元素。

                和下面的定義的區別?
               int arr[] = new int[3];
         B:數據類型[] 數組名 = new 數據類型[]{元素1,元素2,...};
              舉例:int[] arr = new int[]{1,2,3};
                  創建了一個int數組,arr。元素是1,2,3
         C:數據類型[] 數組名 = {1,2,3};
            舉例:int[] arr = {1,2,3};
              創建了一個int數組,arr。元素是1,2,3


 (4)Java對它所佔用的空間的內存分配:
  A:棧 局部變量,在方法中定義的變量
  B:堆 存儲的都是new出來的實體
  C:方法區 存儲的都是方法
  D:本地方法區 跟系統相關
  E:寄存器 CPU使用,芯片運算

  棧和堆的特點:
  棧:棧中的數據必須初始化才能使用。當方法調用完畢,就從內存中消失。
  堆:堆中的數據有默認值。
   A:都有首地址
   B:都有默認值
   C:不在被引用指向的時候,會在jvm空閒的時候被回收。
 (5)兩個問題:

黑馬程序員  Java基礎一 數組及排序 - 619294300 - 619294300的博客

 
  A:數組越界
   訪問了不存在的元素。
  B:空指針
   實體都沒有了,你還使用實體訪問元素。
 (6)數組的常見操作:


  數組有編號,它的操作都離不開編號。
  java對數組還提供了一個屬性:length 用於獲取數組的長度

A:遍歷
  
 public static void printArray(int[] arr)
   {
       for(int x=0; x<arr.length; x++)
      {
             if(x==arr.length-1)
      {
              System.out.print(arr[x]);
      }
      else
     {
             System.out.print(arr[x]+",");
     }
     }
             System.out.println();

 }
   B:獲取最值
   a:最大值

   public static int getMax(int[] arr)
   {

         int max = arr[0];
      for(int x=1; x<arr.length; x++)
    {
     if(arr[x]>max)
     {
      max = arr[x];
     }
    }
    return max;
   }

   b:最小值

  public static int getMin(int[] arr)
   {
    int min = arr[0];
    for(int x=1; x<arr.length; x++)
    {
     if(arr[x]<min)
     {
      min = arr[x];
     }
    }
    return min;
   }

 C:排序
   a:選擇排序
    原理:從0開始依次和後面的比較,小的往前放,第一次完畢後,最小值出現在了最小索引處。

黑馬程序員  Java基礎一 數組及排序 - 619294300 - 619294300的博客

 代碼體現:

   public static void selectSort(int[] arr)
   {
    for(int x=0; x<arr.length-1; x++)
    {
     for(int y=x+1; y<arr.length; y++)
     {
      if(arr[y]<arr[x])
      {
       int temp = arr[x];
       arr[x] = arr[y];
       arr[y] = temp;
      }
     }
    }
   }
    

   b:冒泡排序
    原理:相鄰的元素兩兩比較,大的往後放,第一次完畢後,最大值出現在了最大索引處。

黑馬程序員  Java基礎一 數組及排序 - 619294300 - 619294300的博客

 
   
代碼體現:
  
 public static void bubbleSort(int[] arr)
   {
    for(int x=0; x<arr.length-1; x++)
    {
     for(int y=0; y<arr.length-1-x; y++)
     {
      if(arr[y]>arr[y+1])
      {
       int temp = arr[y];
       arr[y] = arr[y+1];
       arr[y+1] = temp;
      }
     }
    }
   }

  D:查找
   a:普通查找

代碼體現:

   public static int getIndex(int[] arr,int value)
   {
    int index = -1;

    for(int x=0; x<arr.length; x++)
    {
     if(arr[x]==value)
     {
      index = x;
      break;
     }
    }

    return index;
   }

   b:二分查找(折半查找)
    前提:數組必須有序(升序)。

黑馬程序員  Java基礎一 數組及排序 - 619294300 - 619294300的博客
代碼體現

 代碼體現:

   public static int getIndex(int[] arr,int value)
   {
    int min = 0;
    int max = arr.length-1;
    int mid = (max+min)/2;

    while(arr[mid]!=value)
    {
     if(value>arr[mid])
     {
      min = mid + 1;
     }
     else if(value<arr[mid])
     {
      max = mid - 1;
     }

     if(min>max)
     {
      return -1;
     }

     mid = (max+min)/2;
    }

    return mid;
   }

                       ------- android培訓java培訓期待與您交流! ----------

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