public class Test
{
public static void main(String[] args)
{
double[] arr;
int len = 10000;
for (int j = 0; j < 10; j++){
try {
len = Integer.parseInt(args[0]);
} catch (Exception ex){
}
arr = new double[len];
Random rand = new Random();
for (int i = 0; i < len; i++) {
arr[i] = rand.nextDouble();
}
Sort(arr);
}
arr = new double[len];
Random rand = new Random();
for (int i = 0; i < len; i++) {
arr[i] = rand.nextDouble();
}
Date d1 = new Date();
Sort(arr);
Date d2 = new Date();
SimpleDateFormat format = new SimpleDateFormat("hh:mm:ss.SSSSSSS");
Date diff = new Date(d2.getTime() — d1.getTime());
System.out.println(len + " — " + format.format(diff));
}
static void Sort(double[] arr)
{
int len = arr.length;
boolean notSorted = true;
double tmp;
while (notSorted) {
notSorted = false;
for (int i = 0; i < len — 1; ++i) {
if (arr[i] > arr[i + 1]) {
tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
notSorted = true;
}
}
}
}
}
Такой тест на моей машине дал следующий результат:
10000 — 03:00:02.0000032
т.е. чуть больше 2-х секунд. Запустите на своей, у мене нет .NET чтобы протестировать...