黑马程序员 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培训期待与您交流! ----------

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