我是否正确地将此伪代码翻译成了 Java?我特别关注此排序算法的伪代码中的第 3 行
Did I correctly translate this pseudocode into Java? I'm particularly looking at line 3 in the pseudocode for this sorting algorithm
我是否正确地将此伪代码翻译成了 Java?我特别关注此排序算法的伪代码中的第 3 行。
这是我试图翻译的伪代码:
Sort-Array(A)
for i = 1 to (A.length – 1)
for j = (i + 1) to A.length
if (A[j] > A[i])
// swap A[i] and A[j]
buffer = A[j]
A[j] = A[i]
A[i] = buffer
我的翻译:
static void bubbleSort(int array[]) {
int size = array.length;
// loop to access each array element
for (int i = 1; i < size - 1; i++)
// loop comparing the array elements
for (int j = i + 1; j < size; j++)
// compare two adjacent elements
// changing > to < to sort in either order
if (array[j] > array[i]) {
// swapping elements.
int buffer = array[j];
array[j] = array[i];
array[i] = buffer;
}
是的,但有一个错误。在伪代码中你从 i = 1 开始,因为在伪代码中我们不从 0 开始计数。在你的程序中你必须从 0 开始,因为数组的第一个元素从数组 [0] 开始,而不是数组 [1]。
第 3 行翻译正确,但这实际上不是冒泡排序算法。这里 if (array[j] > array[i])
将所有其他元素与 i
元素进行比较,而在冒泡排序中,您只需要比较数组的相邻元素。因此,基本上要将其转换为冒泡排序,您需要将 j
与 j-1
进行比较
我是否正确地将此伪代码翻译成了 Java?我特别关注此排序算法的伪代码中的第 3 行。
这是我试图翻译的伪代码:
Sort-Array(A)
for i = 1 to (A.length – 1)
for j = (i + 1) to A.length
if (A[j] > A[i])
// swap A[i] and A[j]
buffer = A[j]
A[j] = A[i]
A[i] = buffer
我的翻译:
static void bubbleSort(int array[]) {
int size = array.length;
// loop to access each array element
for (int i = 1; i < size - 1; i++)
// loop comparing the array elements
for (int j = i + 1; j < size; j++)
// compare two adjacent elements
// changing > to < to sort in either order
if (array[j] > array[i]) {
// swapping elements.
int buffer = array[j];
array[j] = array[i];
array[i] = buffer;
}
是的,但有一个错误。在伪代码中你从 i = 1 开始,因为在伪代码中我们不从 0 开始计数。在你的程序中你必须从 0 开始,因为数组的第一个元素从数组 [0] 开始,而不是数组 [1]。
第 3 行翻译正确,但这实际上不是冒泡排序算法。这里 if (array[j] > array[i])
将所有其他元素与 i
元素进行比较,而在冒泡排序中,您只需要比较数组的相邻元素。因此,基本上要将其转换为冒泡排序,您需要将 j
与 j-1