1.java数组的复制,反转,查找(线性查找,二分法查找)

1. 运行代码

package com.tansuowu.java;

/*
 * 算法的考察:数组的复制,反转,查找(线性查找,二分法查找)
 *  
 */
public class ArrayTest2 {
	public static void main(String[] args) {
		String[] arr = new String[] { "JJ", "DD", "BB", "GG", "AA", "MM" };
		// 遍历

		for (int i = 0; i < arr.length; i++) {

			System.out.print(arr[i] + "\t");
		}
		System.out.println();
		// 数组的复制(区别于数组变量的赋值:arr1=arr;)
		String[] arr1 = new String[arr.length];
		for (int i = 0; i < arr1.length; i++) {
			arr1[i] = arr[i];
		}
		// 数组的反转
		// 方法一:
		// for(int i = 0;i<arr.length/2;i++){
		// String temp=arr[i];
		// arr[i]=arr[arr.length-i-1];
		// arr[arr.length-i-1]=temp;
		// }
		// 方法二
		// for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
		// String temp = arr[i];
		// arr[i] = arr[j];
		// arr[j] = temp;
		// }
		// 遍历
		System.out.println("所查找的数组为:");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + "\t");
		}
		// 查找(搜索)
		// 线性查找:
		String dest = "BB";
		int z = 0;
		boolean isFlag = true;

		for (int i = 0; i < arr.length; i++) {
			if (dest.equals(arr[i])) {
				z = i + 1;
				System.out.println();
				System.out.println("            找到了指定元素位置,位置为:第" + z + "个元素");
				isFlag = false;
				break;
			}
		}
		if (isFlag) {
			System.out.println("很遗憾,没有找到哦");
		}
		// 二分查找
		// 前提:所要查找的数组必须有序。
		int[] arr2 = new int[] { -65, -34, 2, 34, 54, 66, 79, 105, 210, 983 };

		int dest1 = 2;
		int head = 0;// 初始索引
		int end = arr2.length - 1;// 初始的末索引
		boolean isFlag1 = true;
		int s = 0;
		System.out.println("所查找的数组为:");

		for (int i = 0; i < arr2.length; i++) {
			System.out.print(arr2[i] + " ");
		}
		System.out.println();

		while (head <= end) {
			int middle = (head + end) / 2;
			if (dest1 == arr2[middle]) {
				s = middle + 1;
				System.out.println("            找到了指定元素位置,位置为:" + s + "个元素");
				isFlag1 = false;
				break;
			} else if (arr2[middle] > dest1) {
				end = middle - 1;
			} else {// (arr2[middle]<dest1)
				head = middle + 1;
			}
		}
		if (isFlag1) {
			System.out.println("很遗憾,没有找到哦");
		}
	}
}

2.运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程留香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值