【发布时间】:2015-05-27 00:27:54
【问题描述】:
我已经实现了一种排序算法来对无序整数数组进行排序。如果我放入一个 100,000 元素的数组,则返回大约需要 10,500 百万秒。我的算法是快还是非常慢?下面是代码。
public static void sort(int[] array) {
int lastItem = array[array.length - 1];
int length = array.length;
for (int j = 0; j < array.length; j++) {
for (int i = 0; i < length; i++) {
if (array[i] > lastItem) {
array[length-1] = array[i];
array[i] = lastItem;
lastItem = array[length - 1];
}
}
length--;
if (length > 1) lastItem = array[length - 1];
}
}
【问题讨论】:
-
如果您在谈论“实施性能”:将其与同一阵列的
Arrays#sort进行比较。看看哪个更快。如果您在谈论“算法复杂性”:您的似乎有二次运行时间。阵列大 10 倍,速度慢 100 倍。不太好。 -
如果你使用 java8 请阅读stackoverflow.com/questions/23170832/… 这个链接有很多很好的例子winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples
-
您应该计算算法的 Big-O 时间,然后将其与其他已知算法进行比较。这是最好的方法。单个数据点告诉您的信息很少。
-
还是
O(n^2)不太好。 -
非常感谢。因为我是编程和东西的新手。所以我还不是很了解。但是从你们的回答来看。我想我现在该去哪里了。