Quick Sort is one of best sorting algorithm to sort the numbers by finding the mid element and sorting them as indivudual section.
import java.util.Random;
import java.util.Date;
class QSortAlgorithm {
static public void main(String args[]) {
int n = Integer.parseInt(args[0]);
int a[] = new int[n];
long time;
initialize(a, n);
System.out.println("Sorting "+n+" elements...");
time = (new Date()).getTime();
sort(a);
time = (new Date()).getTime() - time;
System.out.println("Sorted in "+time+" milliseconds.");
}
static void initialize(int a[], int n) {
Random random;
random = new Random();
for (int i=0; i < n; i++) {
a[i] = random.nextInt();
}
}
static void sort(int a[], int lo0, int hi0) {
int lo = lo0;
int hi = hi0;
if (lo >= hi) {
return;
}
int mid = a[(lo + hi) / 2];
while (lo < hi) {
while (lo<hi && a[lo] < mid) {
lo++;
}
while (lo<hi && a[hi] >= mid) {
hi--;
}
if (lo < hi) {
int T = a[lo];
a[lo] = a[hi];
a[hi] = T;
}
}
if (hi < lo) {
int T = hi;
hi = lo;
lo = T;
}
sort(a, lo0, lo);
sort(a, lo == lo0 ? lo+1 : lo, hi0);
}
static void sort(int a[]) {
sort(a, 0, a.length-1);
}
}