import java.util.Arrays;
public class SortAndFind {
public static void bubbleSort(int[] array) {
int i,j,temp;
int count = array.length;
for(i=count; i>0; i--) {
for(j=0; j < i-1; j++) {
if(array[j] > array[j+1]) {
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
public static int fastFind(int[] array, int find, int head, int trail) {
int middle = (head + trail)/2 ;
if(head >= trail)
return -1;
if(find == array[middle]) {
return middle;
}
else if(find < array[middle]) {
return fastFind(array,find, head, middle-1);
}
else {
return fastFind(array,find, middle+1, trail);
}
}
public static void fastSort(int[] array, int head, int trail) {
int temp = array[head],middle=head;
int i=head, j=trail;
Boolean flag = false;
while(i < j){
if(flag==false) {
if(array[j] < temp) {
array[i] = array[j];
middle = j;
flag = true;
}
else {
j--;
}
}
else {
if(array[i] > temp) {
array[j] = array[i];
middle = i;
flag = false;
}
else {
i++;
}
}
}
if(middle != head || middle != trail)
array[middle] = temp;
if(head < middle)
fastSort(array, head, middle - 1);
if(middle < trail)
fastSort(array, middle + 1, trail);
}
public static void main(String[] args) {
int[] array = {5,3,6,3,7,8,9,1,2};
System.out.println("count:" + array.length);
System.out.println(Arrays.toString(array));
//bubbleSort(array);
fastSort(array, 0, array.length-1);
System.out.println("return:"+ fastFind(array, 5, 0, array.length-1));
System.out.println(Arrays.toString(array));
}
}