QuickSort Algorithm

Hi All,
I’m working on a quick sort algorithm, and I’m not sure where I am going wrong. Any ideas as to what is causing my problem? The algorithm won’t sort an array completely.

public class QuickSort {

	int[] dataArray;

	public QuickSort(int[] input) {
		dataArray = input;
		qSort(0, dataArray.length-1);
	}
	
	public void qSort(int start, int end) {
		int temp = 0;
		int left = start;
		int right = end;
		int pivot = 0;
		while(left<right) {
			while(dataArray[left] < dataArray[pivot])
				left++;
			while(dataArray[right] > dataArray[pivot])
				right--;
			if(left<right)
				temp = dataArray[left];
				dataArray[left] = dataArray[right];
				dataArray[right] = temp;
		}
		if(left == right) {
			if(dataArray[left]>dataArray[right]) {
				temp = dataArray[left];
				dataArray[left] = dataArray[right];
				dataArray[right] = temp;
			}
		}
		if(left<right) {
		temp = dataArray[left-1];
		dataArray[left-1] = dataArray[pivot];
		dataArray[pivot] = temp;
		pivot = (start+end)/2;
		qSort(start, pivot-1);
		qSort(pivot+1, end);
		}
	}
	
	public int[] getArray() {
		return dataArray;
	}
}

Thanks for any help!