gpt4 book ai didi

java - 比较两种选择排序方法

转载 作者:搜寻专家 更新时间:2023-11-01 03:47:24 27 4
gpt4 key购买 nike

<分区>

这个问题类似于 ( link) 但不完全是我要找的。这是我在下面写的一个选择排序,它是用 Java 编写的。

public void sort() {

int smallIndex;

for(int i = 0; i < arr.length; i++) {

smallIndex = i;

for (int j = i + 1; j < arr.length; j++) {
if (arr[j] < arr[smallIndex]) {

smallIndex = j;
}
}

if(i < smallIndex)
swap(i, smallIndex);
}
}

这是我的交换方法。

public void swap(int a, int b) {

int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}

我正在用 50,000 个介于 0 和 999 之间的随机元素填充一个数组。该方法可以很好地对其进行排序。每次执行大约需要 1400 毫秒 (1300 - 1500)。

这是我正在看的一本书的选集。

public void sortBook() {

for(int i = 0; i < arr.length; i++) {

int minPos = minimumPosition(i);
swap(minPos, i);
}
}

这是 minimumPosition 方法。

public int minimumPosition(int from) {

int minPos = from;

for(int i = from + 1; i < arr.length; i++) {

if(arr[i] < arr[minPos]) {

minPos = i;
}
}

return minPos;
}

交换方法是我在上面使用的方法。对于 50,000 个范围为 0 - 999 的元素,我始终获得大约 700 毫秒的执行时间。

我的问题是为什么 sort() 的执行时间几乎是 sortBook() 的两倍。我已经在较小的数组上逐步完成了它们,它们似乎采取相同数量的步骤来做同样的事情,sort() 有时只交换,sortBook() 每次都交换。在我的新手眼中,他们看起来在做几乎完全相同的事情。

我不明白为什么 sort() 花费的时间大约是 sortBook() 的两倍。有人对为什么会这样有任何见解吗?

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com