我正在用Java做出选择排序算法。
逻辑似乎很完美,但这段代码并没有对元素进行排序。
import java.util.Arrays;
public class selectionsort{
int y;
void swap(int a[], int firstindex, int secondindex){
int temp=a[firstindex];
a[firstindex]=a[secondindex];
a[secondindex]=temp;
}
public void selectionsort1(int a[],int i){
int lowestindex;
for(y=0;y<a.length-2;y++){
lowestindex=selectionsort2(a,y);
swap(a,y,lowestindex);
}
}
public int selectionsort2(int a[],int y){
int setvalue=a[y];
int setindex=y;
for(int x=setindex+1;x<a.length;x++){
if(a[x]<setvalue){
setvalue=a[x];
}
}
return setvalue;
}
public static void main(String args[]){
int[] a={88,28,39,40,15,06,97,80};
int i=0;
int y=0;
selectionsort s1=new selectionsort();
s1.selectionsort1( a, i);
for (int element: a) {
System.out.println(element);
}
}
}
为什么这不起作用?
答案 0 :(得分:0)
为什么你的算法是一个状态? (属性y)。您应该能够使用静态方法实现这种算法。无需创建&#34;排序对象&#34;。
选择排序:此算法不显示任何嵌套方法调用的需要。请在实施前检查算法:https://en.wikipedia.org/wiki/Selection_sort。只需反复遍历您的元素,如该页面的动画所示。
请注意,此算法对于大型数组效率非常低,并且可能导致可怕的计算时间(与嵌套调用相结合,也会导致可怕的内存消耗)。如果你的问题不是学术性的,而是一个实际问题 - 而你只是&#34;只有&#34;需要对数组进行排序,你可能只需要使用Java&#34; Arrays.sort()&#34;方法
答案 1 :(得分:-2)
Java将方法参数作为原始引用的副本传递。您可以修改它们,它们将显示为已更改但交换将失败。您可以返回数组并从那里捕获它以修改已修改的数组。
的更多信息希望这有帮助。