在 Java 中使用排序算法
Using a sort algorithm in Java
我试图根据我们的编程讲座使用排序算法。也许我只是错过了一些东西。
如果有人能帮助我或对我犯的任何错误给予提示,我将不胜感激。
这是我当前的代码:
package Sortieralgorithmus;
public class sort {
public static int[] straightSelection(int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
int smallestIndex = i;
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[i] < numbers[smallestIndex]) {
smallestIndex = j;
}
}
swap(j, i, numbers);
}
return numbers;
}
}
您正在进行就地选择排序。
更改
if (numbers[i] < numbers[smallestIndex])
到
if (numbers[j] < numbers[smallestIndex])
也改
(int i = 0; i < numbers.length; i++)
至
(int i = 0; i < numbers.length()-1; i++)
此外,因为 i 和 j 是在您的 for
条件中声明的,所以 它们只能在 for 循环范围内访问 。相反,在循环之外声明它们。
最后,最好在交换它们之前检查 if(smallestIndex != i)
。
这是你的工作代码,假设你的交换功能正常工作。
package Sortieralgorithmus;
public class sort {
public static int[] straightSelection(int[] numbers) {
int i, j; // declare them here
int smallestIndex; //declare it here as well
for (i = 0; i < numbers.length-1; i++) {
smallestIndex = i;
for (j = i + 1; j < numbers.length; j++) {
if (numbers[j] < numbers[smallestIndex]) {
smallestIndex = j;
}
}
if(smallestIndex != i){
swap(smallestIndex, i, numbers);
}
}
return numbers;
}
}
下面是我对swap命令的实现(抱歉声明错误,我已经认出来了,我会马上修改!):
package Sortieralgorithmus;
public class Swap {
public static void swap(int a, int b, int []numbers) {
int temp = numbers[a];
numbers[a] = numbers[b];
numbers[b] = temp;
}
}
我试图根据我们的编程讲座使用排序算法。也许我只是错过了一些东西。
如果有人能帮助我或对我犯的任何错误给予提示,我将不胜感激。
这是我当前的代码:
package Sortieralgorithmus;
public class sort {
public static int[] straightSelection(int[] numbers) {
for (int i = 0; i < numbers.length; i++) {
int smallestIndex = i;
for (int j = i + 1; j < numbers.length; j++) {
if (numbers[i] < numbers[smallestIndex]) {
smallestIndex = j;
}
}
swap(j, i, numbers);
}
return numbers;
}
}
您正在进行就地选择排序。 更改
if (numbers[i] < numbers[smallestIndex])
到
if (numbers[j] < numbers[smallestIndex])
也改
(int i = 0; i < numbers.length; i++)
至
(int i = 0; i < numbers.length()-1; i++)
此外,因为 i 和 j 是在您的 for
条件中声明的,所以 它们只能在 for 循环范围内访问 。相反,在循环之外声明它们。
最后,最好在交换它们之前检查 if(smallestIndex != i)
。
这是你的工作代码,假设你的交换功能正常工作。
package Sortieralgorithmus;
public class sort {
public static int[] straightSelection(int[] numbers) {
int i, j; // declare them here
int smallestIndex; //declare it here as well
for (i = 0; i < numbers.length-1; i++) {
smallestIndex = i;
for (j = i + 1; j < numbers.length; j++) {
if (numbers[j] < numbers[smallestIndex]) {
smallestIndex = j;
}
}
if(smallestIndex != i){
swap(smallestIndex, i, numbers);
}
}
return numbers;
}
}
下面是我对swap命令的实现(抱歉声明错误,我已经认出来了,我会马上修改!):
package Sortieralgorithmus;
public class Swap {
public static void swap(int a, int b, int []numbers) {
int temp = numbers[a];
numbers[a] = numbers[b];
numbers[b] = temp;
}
}