public
class
MyQuickSort {
private
int
array[];
private
int
length;
public
void
sort(
int
[] inputArr) {
if
(inputArr ==
null
|| inputArr.length ==
0
) {
return
;
}
this
.array = inputArr;
length = inputArr.length;
quickSort(
0
, length -
1
);
}
private
void
quickSort(
int
lowerIndex,
int
higherIndex) {
int
i = lowerIndex;
int
j = higherIndex;
int
pivot = array[lowerIndex+(higherIndex-lowerIndex)/
2
];
while
(i <= j) {
/**
* In each iteration, we will identify a number from left side which
* is greater then the pivot value, and also we will identify a number
* from right side which is less then the pivot value. Once the search
* is done, then we exchange both numbers.
*/
while
(array[i] < pivot) {
i++;
}
while
(array[j] > pivot) {
j--;
}
if
(i <= j) {
exchangeNumbers(i, j);
i++;
j--;
}
}
if
(lowerIndex < j)
quickSort(lowerIndex, j);
if
(i < higherIndex)
quickSort(i, higherIndex);
}
private
void
exchangeNumbers(
int
i,
int
j) {
int
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
public
static
void
main(String a[]){
MyQuickSort sorter =
new
MyQuickSort();
int
[] input = {
24
,
2
,
45
,
20
,
56
,
75
,
2
,
56
,
99
,
53
,
12
};
sorter.sort(input);
for
(
int
i:input){
System.out.print(i);
System.out.print(
" "
);
}
}
}
0 comments:
Post a Comment