我正在做关于排序算法效率的项目。假设我执行了 50 次冒泡排序迭代并找到 n 个数字所花费的平均时间。但我意识到前几次迭代总是比后续迭代慢
例如 1394 毫秒、1381 毫秒、1001 毫秒、1008 毫秒、1008 毫秒、1011 毫秒...
long lStartTime = System.currentTimeMillis();
bubbleSort(R); // R is the array of int
long lEndTime = System.currentTimeMillis();
long difference = lEndTime - lStartTime;
背后的原因可能是什么?是因为cpu能分辨出哪组数据要存入缓存吗?如果是这样,我是否应该不使用随后的计算时间进行分析,因为这不现实?
谢谢!
编辑:我也在做其他排序算法,以冒泡排序为例,但事情是它发生在我所做的所有排序中,除了插入
public static int[] bubbleSort(int[] S) {
int counter = 0;
boolean isUnsort = true;
while (isUnsort) {
isUnsort = false;
for (int i = 0; i < S.length - 1 - counter; i++) {
if (S[i] > S[i + 1]) {
int temp = S[i];
S[i] = S[i + 1];
S[i + 1] = temp;
isUnsort = true;
}
}
counter++;
}
return S;
}