使用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;
}
}