All pastes #505585 Raw Edit

Something

public java v1 · immutable
·published 2007-05-23 17:26 UTC
rendered paste body
public static int tertiarySearch(int e, int[] a, boolean log) {		if ((e < a[0]) || (e > a[a.length-1])) {			return -1;		}		int[] ret = { 0, (a.length-1)/3, (a.length-1)*2/3, a.length-1 };		boolean startLog = true;		while (true) {			if (log == true) {				for (int x : a) {					if (a[ret[0]] == x) {						startLog = true;					}					if (a[ret[3]] == x) {						System.out.print(x + ":");						startLog = false;					}					if (startLog == true) {						System.out.print(x + " ");					}					else {						System.out.print("  ");					}					if ((a[ret[1]] == x) || (a[ret[2]] == x)) {						System.out.print(":"); 					}				}				System.out.println();			}			if (e == a[ret[0]]) {				return ret[0];			}			if (e == a[ret[1]]) {				return ret[1];			}			if (e == a[ret[2]]) {				return ret[2];			}			if (e == a[ret[3]]) {				return ret[3];			}			if (e < a[ret[1]]) {				splitThree(ret[0],ret[1]-1,ret);			}			else { 				if (e < a[ret[2]]) {					splitThree(ret[1],ret[2]-1,ret);				}				else {					splitThree(ret[2],ret[3]-1,ret);				}			}			if (ret[0] == ret[3]) {				return -1;			}		}	}		private static void splitThree(int start, int end,int[] ret) {		ret[0] = start;		ret[1] = start+((end-start)/3);		ret[2] = start+((end-start)*2/3);		ret[3] = end;	}