1. 程式人生 > >java常見面試題演算法

java常見面試題演算法

包括:氣泡排序,快速排序,快速查詢:

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));
	}

}