所以我试图让这个算法起作用,但每次运行它时,我都会得到 [10,11,7,10,7,5,7,5 ] 作为我的输出。目标是按降序获得结果。此外,我不明白为什么当我的数组只包含 6 个值时会有 8 个结果。请帮助..谢谢。 公开课搜索{
public static void main (String[]args)
{
int[] array = {10,7,11,5,13,8};
//ExchangeSort(array);
};
public static void ExchangeSort(int[] num)
{
int i,j,temp;
for(i=1;i<num.length-1;i++)
{
for(j=i+1;j<num.length;j++)
{
if(num[i]<num[j])
{
temp = num[i];
num[i] = num[j];
num[j] = temp;
//System.out.println(temp);
}
}
}
};
};
最佳答案
您将忽略排序中的第一个元素,因为数组索引从 0
开始。你的第一个循环应该从索引 0
开始,直到 length-1
为:
for(i=0;i<num.length-1;i++)
此外,您还需要使用 Arrays.toString
(无需循环) 在循环外或在 main 方法中打印排序数组,如下所示:
// this will print the array elements
System.out.println("Sorted Array: "+Arrays.toString(num));
并从方法末尾删除分号 ;
。
Observatory 注意:您的方法名称不应以大写字母开头。
编辑:您的完整更正代码如下:
public static void main(String[] args) {
int[] array = {10,7,11,5,13,8};
exchangeSort(array);
System.out.println("Sorted Array: "+Arrays.toString(array));
}
public static void exchangeSort(int[] num) {
int temp;
for(int i=0;i<num.length-1;i++){
for(int j=i+1;j<num.length;j++){
if(num[i]<num[j]){
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
}
System.out.println("Sorted Array: "+Arrays.toString(num));
}
关于java - 交换排序算法查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042624/