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!