public class Count3Quit{
public static void main(String [] args){
boolean []arr = new boolean[500]; //定义一个有500个元素的数组
for(int i=0;i<arr.length;i++){
arr[i] = true; //均定义为true
}
int leftCount = arr.length;
int countNum = 0;
int index = 0;
while(leftCount > 1){ //数组元素个数不为0时;
if(arr[index] == true) {
cuntNum++; //累加够3
if(countNum == 3) {
countNum = 0; //3个之后重新查
arr[index] = false; //第三个改变值为false
leftCount --; //数组总元素减少一个
}
}
index ++; //处于while循环中
if(index == arr.length ) {
index = 0; //从头再开始循环
}
}
for(int i=0; i<arr.length;i++){
if(arr[i] == true) { //找到剩下的那个
System.out.println(i);
}
}
}
}
二分法查找:
public class TestSeach{
public static void mian(String[] args){
int a[] = {1,3,6,8,9,10,12,18,20,34};
int i = 12;
System.out.println(binarySearch(a,i));
}
public static int search(int[] a, int num ){
for(int i =0;i<a.length;i++){
if(a[i] == num)
}
return -1; // -1表示没找到
}
public static int binarySearch(int[]a, int num){
if (a.length == 0) return -1;
int startPos = 0; //其实位置等于0
int endPos = a.length-1; //结束的位置
int m = (startPos + endPos) / 2;
while(startPos <= endPos){
if(num == a[m]) return m;
if(num > a[m] ){
startPos = m+1; //起始位置调整为后半段
}
if(num < a[m]){
endPos = m-1; //起始位置调整为前半段
}
m = (startPos + endPos) / 2;
}
return -1; //没有,返回-1
}
}