1、遍历
代码如下(示例):
//遍历1
import java.util.Scanner;
public class CircleTest {
public static int search(int k,int[] a) {//遍历1
int ret = -1;
for(int i=0;i<a.length;i++)
{
if(a[i]==k) {
ret = i;
break;
}
}
return ret;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] a = new int [7];
System.out.println("请输入7个数: ");
for(int i=0;i<a.length;i++)
{
a[i]=in.nextInt();
}
System.out.println("请输入要查找的数字: ");
int y = in.nextInt();
int x = search(y,a);
System.out.println("所查找的元素所在的位置下标为:");
System.out.println(x);
}
}
//遍历2
import java.util.Scanner;
public class CircleTest {
public static boolean search(int k,int[] a) {//遍历2
boolean ret = false;
for(int h:a)
{
if(h==k) {
ret = true;
break;
}
}
return ret;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int[] a = new int [7];
System.out.println("请输入7个数: ");
for(int i=0;i<a.length;i++)
{
a[i]=in.nextInt();
}
System.out.println("请输入要查找的数字: ");
int y = in.nextInt();
boolean x = search(y,a);
System.out.println("查找结果为:");
System.out.println(x);
}
}
结果
//情况1
请输入7个数:
5 2 0 1 3 1 4
请输入要查找的数字:
1
所查找的元素所在的位置下标为:
3
//情况2
请输入7个数:
1 9 2 8 7 3 6
请输入要查找的数字:
6
查找结果为:
true
2、二分法
package pro2;
public class CircleTest {
public static int search(int k,int[] a) {//二分法
int ret = -1;
int l = 0; //最左端
int r = a.length; //最右端
while(l!=r) { //数组不为1
int m= ( l + r )/2; //取中间值,/可能会比较靠左一点
if( a[m]==k) { //如果和中间值相等了,结束
ret = m;
break;
}else if( a[m]>k ) { //在左半部分
r = m-1; //右端从中间往左移动一个单位
}else { //在右半部分
l = m+1; //左端从中间往右移动一个单位
}
}
if( a[l] == k) //只有一个数的数组
ret = l;
return ret;
}
public static void main(String[] args) {
int[] a = {1,3,5,7,9,11,12,13,14,16,17,18,21,22};
System.out.println("查找18的位置:");
System.out.println(search(18,a));
}
}
结果
查找18的位置:
11