《黑马程序员》java笔记->【02】数组的常见操作:遍历,排序,查找

------- android培训java培训、期待与您交流! ----------

数组的常见操作:遍历,排序,查找

1 数组遍历:
用for循环遍历数组脚标,第一个为Array[0];数组长度为Array.length

  int[] arr=new int[]{1,2,3,4,5}; 
  int[] arr1=new int[]{7,8,9,10,11};
  
  //输出数组arr的长度
  System.out.println("arr.length="+arr.length);
  //arr数组正序遍历
  for(int x=0;x<arr.length;x++)
  {
   System.out.println("arr["+x+"]="+arr[x]);
  }
  System.out.println("==================================");
  
  //输出数组arr1的长度
  System.out.println("arr1.length="+arr.length);
  //数组arr1的倒序遍历
  for(int y=arr1.length-1;y>=0;y--)
  {
   System.out.println("arr1["+y+"]="+arr1[y]);
  }
----------------------------------------------------------------------
2获取最值(getMax,getMin)
如getMax:
 public  int getMax(int arr[])
 {
  int max=arr[0];
  for(int i=1;i<arr.length;i++)
  {
   if(arr[i]>max)
    max=arr[i];
  }
   return max;

 }
}
----------------------------------------------------------------------
3排序(选择排序,冒泡排序) 希尔排序最快,java中提供排序的方法
包:import java.util.*;
Arrays.sort(arr);//java提供排序方法。开始都用它。

//数组选择排序。
class Demo12
{
 public static void main(String args[])
 {
  int[] arr1=new int[]{57,23,19,89,66,74};
  Funcation a1=new Funcation();
  a1.selectSort(arr1);
  a1.printArray(int[] arr);
 }
}
class Funcation
{
 //遍历数组
 public void printArray(int[] arr)
 {
  for(int i=0;i<arr.length;i++)
  {
   System.out.print("arr["+i+"]="+arr[i]+",");
   if(i==arr.length-1)
   System.out.println("arr["+i+"]="+arr[i]);
  }
 }  
 //选择排序
 public void selectSort(int[] arr)
 {
  for(int i=0;i<arr.length-1;i++)
  {
   for(int j=i+1;j<arr.length;j++)
   {
    if(arr[i]>arr[j])
    {
     int z=arr[i];
     arr[i]=arr[j];
     arr[j]=z;
    }
   }
   
  }
 }
}

//冒泡排序
class Demo13
{
 public static void main(String args[])
 {
  int[] arr1=new int[]{57,23,19,89,66,74};
  Funcation a1=new Funcation();
  a1.bubbleSort(arr1);
  a1.printArray(arr1);
  
 }
}
class Funcation

 //遍历数组
 public void printArray(int[] arr)
 {
  for(int i=0;i<arr.length;i++)
  {
   System.out.print("arr["+i+"]="+arr[i]+",");
   if(i==arr.length-1)
   System.out.println("arr["+i+"]="+arr[i]);
  }
 }  

 //冒泡排序方法
 public void bubbleSort(int[] arr)
 {
  for(int i=0;i<arr.length-1;i++)
  {
   for(int j=0;j<arr.length-1-i;j++)
   {
    if(arr[j]>arr[j+1])
    {
     int temp=arr[j];
     arr[j]=arr[j+1];
     arr[j+1]=temp;
    }
   }
  }

    /**
  方法2:
   for(int x=arr.length-1;x>0;x--)
  {
   for(int y=0;y<x;y++)
   {
    if(arr[y]>arr[y+1])
    {
     int temp=arr[j];
     arr[j]=arr[j+1];
     arr[j+1]=temp;
    }
   }
  }
     */
 }
}
----------------------------------------------------------------------
4折半查找(二分查找)
//查找数据是否存在,在什么位置
//注意:二分查找的前提条件是:要查的数组是有序的,不然就会出现错误。
class Demo14
{
 public static void main(String args[])
 {
  int[] arr={9,14,24,38,44,77,90};
  Funcation a1=new Funcation();
  System.out.println(a1.binarySearch(arr,38));
   
 }
}
class Funcation
{
 //二分查找
 public int binarySearch(int[] arr,int key)
 {
  int min,max,mid;
  min=0;
  max=arr.length-1;
  //只要min和max之间有距离,就有多次折半可能,用while循环
  while(min<=max)
  {
   //获取中间角标
   mid=(max+min)/2;//等同于mid=(max+min)>>1;
   //获取中间角标上的元素和key进行比较。
   //来确定min和max的新值,或者叫确定新的查找范围
   if(key>arr[mid])
    min=max+1; 
   else if(key<arr[mid])
    max=mid-1;
   else
    return mid;
  }
  return -1;
 }
}
--------------------------------------------------------------------------
//求key插入有序数组的位置
class Demo16
{
 public static void main(String args[])
 {
  int[] arr1={9,14,24,38,44,77,90};
  Funcation a1=new Funcation();
  System.out.println("index="+a1.getInsertIndex(arr1,91));

  
  
 }
}
class Funcation
{
 public int getInsertIndex(int[] arr,int key)
 {
  int min,max,mid;
  min=0;
  max=arr.length-1;
  while(min<max)
  {
   mid=max+min;
   if(arr[mid]<key)
   min=mid+1;
   else if(arr[mid]>key)
   max=mid-1;
   else
   return mid;
  }
  return min;
 }

  
}
---------------------------------------------------------------------------
//数组元素反向输出
/**
方法一:
class Demo17
{
 public static void main(String args[])
 {
  int[] arr1={6,9,12,44,21};
  Funcation a1=new Funcation();
  a1.reverseArray(arr1);
  
 }
}
class Funcation
{
 public void reverseArray(int[] arr)
 {
  int k=arr.length-1-i;
  for(int i=0;i<arr.length;i++)
  {
   System.out.print("arr["+i+"]="+arr[k]+" ");
  }
 }

}
*/
//方法二
class Demo17
{
 public static void main(String args[])
 {
  int[] arr1={6,9,12,44,21};
  Funcation a1=new Funcation();
  a1.reverseArray(arr1);
  a1.printArray(arr1);
  
 }
}
class Funcation
{
 public void reverseArray(int[] arr)
 {
  for(int start=0,end=arr.length-1;start<end;start++,end--)
  {
   swap(arr,start,end);
  }
 }
 public void swap(int[] arr,int a,int b)
 {
  int temp=arr[a];
  arr[a]=arr[b];
  arr[b]=temp;
 }
 public void printArray(int[] arr)
 {
  for(int i=0;i<arr.length;i++)
  {
   System.out.print("arr["+i+"]="+arr[i]+" ");
  }
 }
}
----------------------------------------------------------
二维数组:

  int[][] arr2=new int[3][];//二维数组

  System.out.println(arr2);
//运行结果[I@b6e39f,将arr对应的数组转成了字符串并打印
//该字符串中包含的信息是:以@作为分隔符。左边是该实体的类型,
//[:代表数组,  I:表示整数int.
//右边是该实体的哈希值(是实体在内存中的储存位置)。

  System.out.println(arr2[0]);
//运行结果为null;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值