数组中的常见算法--------数组的复制,反转和查找(线性查找,二分法查找)

1.数组的复制

public class ArrayTest4{
      public static void main(String[] args){
    	  String[] array1,array2;
    	  array1=new String[]{"a","b","c","d"};
    	  for(int i=0;i<array1.length;i++){
    		  System.out.print(array1[i]+" ");
    	  }
    	  System.out.println();
    	  //array2=array1;//不能称作数组的赋值,地址值相同,都指向堆空间中的唯一的一个数组实体
           //将array1复制给array2
    	  array2=new String[array1.length];
           for(int i=0;i<array2.length;i++){
        	   array2[i]=array1[i];
        	   System.out.print(array2[i]+" ");
           }
      }
}

2.数组的反转 

public class ArrayFanZhuan {
	public static void main(String[] args){
  	  String[] arr1=new String[]{"a","b","c","d","e"};
  	  for(int i=0;i<arr1.length;i++){
  		  System.out.print(arr1[i]+" ");
  	  }
  	  System.out.println();
        //数组的反转
	     for(int i=0;i<arr1.length/2;i++){
	    	String temp;
	    	temp=arr1[i];
	    	arr1[i]=arr1[arr1.length-1-i];
	    	arr1[arr1.length-1-i]=temp;
	     }
	  	   for(int i=0;i<arr1.length;i++){
	    		 System.out.print(arr1[i]+" ");
	    	   }
    }
}

3.数组的线性查找 

public class XianXingChaZhao {
	public static void main(String[] args){
	  	  String[] arr1=new String[]{"a1","b2","c3","d4","e5"};
	  	  for(int i=0;i<arr1.length;i++){
	  		  System.out.print(arr1[i]+" ");
	  	  }
	  	  System.out.println();
	  	  //线性查找
	  	  String dest="c3";
	  	  boolean flag=true;
	  	  for(int i=0;i<arr1.length;i++){
	  		  if(dest.equals(arr1[i])){
	  			System.out.println("找到了指定元素,位置为:"+i);
	  			flag=false;
	  			break;
	  		  }  
	  	  }
	  	  if(flag==true){
	  		System.out.println("没有找到指定元素");
	  	  }
	        
 }
}

4.数组的二分法查找

前提:所要查找的数组必须有序

public class ErFenFaChaZhao {
	public static void main(String[] args){
	  	  int[] arr1=new int[]{-98,-31,2,34,56,78,99};
	  	  for(int i=0;i<arr1.length;i++){
	  		  System.out.print(arr1[i]+" ");
	  	  }
	  	  System.out.println();
	       //二分法查找
	  	  //前提:所要查找的数组必须有序
	  	  int head=0;//首索引位置
	  	  int end=arr1.length-1;//尾索引位置
	  	  int dest=16;
	  	  boolean flag=true;
	  	while(end>=head){
	  		int middle=(head+end)/2;
	  		if(dest>arr1[middle]){
	  			head=middle+1;
	  		}else if(dest<arr1[middle]){
	  			end=middle-1;
	  		}else{
	  			System.out.println("找到指定的元素,位置为"+middle);
	  			flag=false;
	  			break;
	  		}	  		
	  	}
	  	if(flag){
	  		System.out.println("找不到指定的元素");
	  	}	  	  
}
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值