java - 交换排序算法查询

标签 java arrays algorithm sorting

所以我试图让这个算法起作用,但每次运行它时,我都会得到 [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/

相关文章:

java - 获取 ExceptionMapper 中抛出异常的方法的 @Produces 注解

java - 在应返回结果的 Javafx GUI 中使用线程

python - 在 Numpy 中为值对生成矩阵

algorithm - SQL查询的校验和算法?

sql-server - 模糊字符串匹配 SQL - 不同顺序的单词

algorithm - Prim 的 MST 算法的时间复杂度

java - 合并单元格时出现 XmlValueDisconnectedException

java - IntelliJ 项目,其中每个模块都有自己的 git 存储库

Java如何从2D数组获取1D数组引用

c - 在 Main 中动态分配结构体数组,然后为其分配函数