查找
线性查找
package com.xingyun.select;
public class Static_Select {
public static void main(String[] args) {
int[] str=new int[] {5,6,7,2,1,3,55,14,71};
int key=55;
for(int i=0;i<str.length;i++) {
if(key==str[i]) {
System.out.println(i);
break;
}
}
}
}
二分查找(折半查找)
package com.xingyun.select;
public class Two_Select {
public static void main(String[] args) {
int[] str=new int[] {1,2,3,4,5,6,7,8,9,10};
int tar=9;
int begin=0;
int end=str.length-1;
int mid=(begin+end)/2;
int index=-1;
while(true) {
if(tar==str[mid]) {
index=mid;
break;
}else {
if(tar<str[mid]) {
end=mid-1;
}else {
begin=mid+1;
}
mid=(begin+end)/2;
}
}
System.out.println("index:"+index);
}
}
数组整合
package com.xingyun.select;
import java.util.Arrays;
public class MyArray {
int[] arr=new int[0];
public void addArray(int item) {
int[] arry=new int[arr.length+1];
for(int i=0;i<arr.length;i++) {
arry[i]=arr[i];
}
arry[arr.length]=item;
arr=arry;
System.out.println(Arrays.toString(arr));
}
public void delArray(int index) {
if(index>=arr.length) {
System.out.println("数组下标越界,要删除的位置非法");
}else {
int[] arry=new int[arr.length-1];
for(int i=0;i<arry.length;i++) {
if(i<index) {
arry[i]=arr[i];
}else if(i>index) {
arry[i]=arr[i-1];
}
}
arr=arry;
System.out.println(Arrays.toString(arr));
}
}
public void static_Select(int item) {
boolean bool=true;
for(int i=0;i<arr.length;i++) {
if(item==arr[i]) {
System.out.println("目标元素位置为:"+i);
bool=false;
}else if(i==arr.length-1&&bool){
System.out.println("目标元素不存在!");
}
}
}
public void two_Select(int item) {
int begin=0;
int end=arr.length-1;
int mid=(begin+end)/2;
while(true) {
if(item==arr[mid]) {
System.out.println("目标元素下标:"+mid);
break;
}else {
if(item<arr[mid]) {
end=mid-1;
}else {
begin=mid+1;
}
}
mid=(begin+end)/2;
}
}
public static void main(String[] args) {
MyArray my=new MyArray();
my.addArray(1);
my.addArray(4);
my.addArray(8);
my.addArray(9);
my.delArray(8);
my.static_Select(4);
my.two_Select(4);
}
}