30-数组的反转、排序、查找

本文深入探讨了数组的基本操作,包括复制、反转及查找方法。通过Java代码示例,详细讲解了数组复制的过程,演示了两种数组反转的方法,并对比了线性查找和二分查找的效率。适合初学者和需要复习数组操作的开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试数组的复制、反转、查找

public class ArrayTest {

public static void main(String[] args) {
	
String[] arr1 = new String[] { "AA", "CC", "KK", "MM", "DD", "JJ", "GG", "ZZ" };

// 数组的复制
String[] arr2 = new String[arr1.length];
for (int i = 0; i < arr2.length; i++) {
	arr2[i] = arr1[i];
}

// 遍历arr1
System.out.println("遍历arr1:");
for (int i = 0; i < arr1.length; i++) {
	System.out.print(arr1[i] + "\t");
}

// arr1数组的反转
// 方式一:
// for(int i = 0;i < arr1.length / 2;i++){
// String temp = arr1[i];
// arr1[i] = arr1[arr1.length - 1 - i];
// arr1[arr1.length - 1 - i] = temp;
// }
// 方式二:
for (int i = 0, j = arr1.length - 1; i < j; i++, j--) {
	String temp = arr1[i];
	arr1[i] = arr1[j];
	arr1[j] = temp;
}

// 遍历arr1
System.out.println("\n遍历arr1:");
for (int i = 0; i < arr1.length; i++) {
	System.out.print(arr1[i] + "\t");
}
// 查找:
// 线性查找
//方式一:

//		String word = "DD";
//		int i = 0;
//		for (; i < arr1.length; i++) {
//
//			if (word.equals(arr1[i])) {
//				System.out.println("找到了指定元素,索引为:" + i);
//				break;
//			}
//		}
//		if (i == arr1.length) {
//			System.out.println("没找到");
//		}
//方式二:
String word = "DD";
boolean flag = true;
for (int i = 0;i < arr1.length; i++) {

if (word.equals(arr1[i])) {
	System.out.println("找到了指定元素,索引为:" + i);
	flag = false;
	break;
}

}
	
if(flag){
	System.out.println("没找到");
}

   	
    	//二分法查找
    	//使用前提:数组必须有序
    	int[] arr3 = new int[]{2,3,6,8,10,15,19,21,28,32,38,48,50,77,99,101};
    	int dest = 2;
    	
    	int head = 0;//默认的首索引
    	int end = arr3.length - 1;//默认的尾索引
    	boolean flag1 = true;
    	while(head <= end){
    		
    		int middle = (head + end )/2;
    		
    		if(arr3[middle] == dest){
    			System.out.println("找到了指定元素,索引为:" + middle);
    			flag1 = false;
    			break;
    		}else if(arr3[middle] > dest){
    			end = middle - 1 ;
    		}else{
    			head = middle + 1;
    		}

   		
    	}
    	
    	if(flag1){
    		System.out.println("没找到");
    	}
    
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值