java-Arrays工具类的基本使用,以及来实现二分法查找( 检索),数组扩容。

使用Arrays工具类
Arrays.sort(arr):是用来排序的

二分法查找:
二分法查找核心代码块:

/**
	 * 
	 * @param arry
	 * @param value
	 * @return	找到时,返回mid的值,没有找到时,返回-1
	 */
	public static int myBinarySearch(int [] arry,int value) {
		int low = 0;
		int high = arry.length-1;
		
		while(low<=high) {
			int mid = (low+high)/2;
			if(value==arry[mid]) {
				return mid;
			}
			if(value>arry[mid]) {
				 low = mid+1;
			}
			if(value<arry[mid]) {
				high = mid-1;
			}
		}
		return -1;//没有找到时返回-1;
	}

具体实例:

package com.hadwinling.learn;

import java.util.Arrays;

/**

* Title: TestBinarySearch.java

* Description: 二分法查找,检索

* @author HadwinLing

* @date 2020年1月29日

* @version 1.0

*/
public class TestBinarySearch {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 int[] arr = { 30,20,50,10,80,9,7,12,100,40,8};
		 Arrays.sort(arr);

		 System.out.println(Arrays.toString(arr));
		 System.out.println(myBinarySearch(arr, 7));
	}
	/**
	 * 
	 * @param arry
	 * @param value
	 * @return	找到时,返回mid的值,没有找到时,返回-1
	 */
	public static int myBinarySearch(int [] arry,int value) {
		int low = 0;
		int high = arry.length-1;
		
		while(low<=high) {
			int mid = (low+high)/2;
			if(value==arry[mid]) {
				return mid;
			}
			if(value>arry[mid]) {
				 low = mid+1;
			}
			if(value<arry[mid]) {
				high = mid-1;
			}
		}
		return -1;//没有找到时返回-1;
	}
}

数组扩容核心代码块

	public static int[] extendRange(int[] s1) {
		int[] s2 = new int[s1.length*2];//每次数组扩容是在原先的基础上数组长度变为:原来的数组长度的两倍
		System.arraycopy(s1, 0, s2, 0, s1.length);   //就将s1中所有的元素拷贝到了s2,这里使用的是Arrays工具类的arraycopy()方法
		return s2;
	}

具体实例:

package com.hadwinling.learn;

/**

* Title: TestArrayExtend.java

* Description: 数组扩容

* @author HadwinLing

* @date 2020年1月29日

* @version 1.0

*/
public class TestArrayExtend {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int[] s1= {1,2,3,4,5};
		s1=extendRange(s1);
		System.out.println("扩容后");
		for(int i=0;i<s1.length;i++) {
			System.out.print(s1[i]+"  ");
		}
	}
	//数组的扩容(本质上是:先定义一个更大的数组,然后将原数组内容原封不动拷贝到新数组中)
	public static int[] extendRange(int[] s1) {
		int[] s2 = new int[s1.length*2];//每次数组扩容是在原先的基础上数组长度变为:原来的数组长度的两倍
		System.arraycopy(s1, 0, s2, 0, s1.length);   //就将s1中所有的元素拷贝到了s2,这里使用的是Arrays工具类的arraycopy()方法
		return s2;
	}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值