gpt4 book ai didi

java - 实现冒泡排序——两种不同的方式,还是我完全实现不同的排序算法?

转载 作者:行者123 更新时间:2023-11-30 06:12:35 25 4
gpt4 key购买 nike

我正在阅读排序算法,我完成了选择和冒泡排序,并认为我应该尝试实现我所理解的内容。我花了一段时间才理解我写的打算进行选择排序的内容(代码片段-1)不是'完全实现选择排序的关键功能(即找到未排序数组的最小值并一次构建一个排序数组)。所以我又写了一个选择排序(代码片段-3)。但现在,我对 Snippet-1 很好奇。谁能告诉我这是否是冒泡排序?

代码片段-1

public void sort(int[] arr) {
// code snippet-1
int n = arr.length;
for (int i = 0; i < n; i++) {
for(int j = i + 1; j < n; j++) {
if(arr[i] > arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
<小时/>

代码片段-2

public void sort(int[] arr) {
// code snippet-2
int n = arr.length;
for (int i = 0; i < n-1; i++) {
for (int j = 0; j < n-1; j++) {
if(arr[j] > arr[j+1]){
int temp=arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
}
<小时/>

代码片段-3

public void sort(int[] arr) {
// Code snippet-3
int n = arr.length;
for (int i = 0; i < n; i++) {
int min = i;
for(int j = i + 1; j < n; j++){
if(arr[j] < arr[min]) {
min = j;
}
}
int temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
<小时/>

此外,在一个不太相关的帐户上,有人可以解释一下外部 for 循环条件(即 i<ni<n-1 )在这些情况下如何不影响结果?我只将 snippet-2 的条件更改为 j<n-1因为它给了我 Arrayoutofbound由于 arr[j+1] 项而产生错误。是的,我也在 Debug模式和动画中看到了整个过程,但仍然不完全清楚如何选择条件。我知道我在这里遗漏了一些东西。

最佳答案

您有不同的冒泡排序方法,Arrayoutofbound 异常是因为比较了数组中不存在的 n+1 个元素。

在代码片段 2 中,您还可以通过执行以下操作来避免又一个循环:

for (int i = 0; i <= n-2; i++)

关于java - 实现冒泡排序——两种不同的方式,还是我完全实现不同的排序算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49909739/

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