Java-如何交换2个数组元素并使用toString输出shell排序的每个交换?

标签 java arrays swap shellsort

我对 Java 还很陌生,这是学校的作业,我要创建一个 ShellSort 类和驱动程序类。 ShellSort 类应创建并填充一个大小为 n 的数组,并包含使用以下伪代码的 shell 排序方法:

pseudo-code

这是我到目前为止的代码:

import java.util.*;

public class ShellArray {
    int array[] = null;
    int size=0;
    Random random = new Random();
    int gap = 0;

    public ShellArray (int size) {
        this.size = size;

        array=new int[size];
        for (int i = 0; i<size; i++) {
            this.array[i]=random.nextInt(100);
        }


        System.out.println("Your array is: ");
        for(int i=0; i<size;i++) {
            System.out.print(" " +array[i] + " ");
        }
    }


public int[] shellSort(int size) {

        gap = size/2;

        do {
            boolean swapflag = true;
            do {
                swapflag = false;
                for (int s = 0; s<(size-gap);s++) {
                    if (array[s] > array[s+gap]) {

                        //swap array[s] with array[s+gap]

                        swapflag = true;

                        }
                    }
                }
            while (swapflag != false);
        }while (gap>0);

        gap = gap/2;
    }


    public String toString () {

         //to output array results of each swap
    }

}

我不知道如何将 array[s] 与 array[s+gap] 交换以及如何使用 toString 在每次交换时输出数组。

我尝试使用“temp”变量来放入数组[s],这样我就可以将数组[s+gap]放入数组[s]的索引中,但我收到了“ShellArray@7c53a9eb”错误?

任何帮助将不胜感激!谢谢。

最佳答案

  1. 要打印数组,请使用 System.out.println(Arrays.toString(array))
  2. 要交换数组元素,

    if (数组[s] > 数组[s + 间隙]) { int temp = 数组[s]; 数组[s] = 数组[s + 间隙]; 数组[s + 间隙] = 温度; //将 array[s] 与 array[s+gap] 交换 交换标志=真; }

此外,似乎 gap = gap/2; 应该位于第一个 do while 循环内。

关于Java-如何交换2个数组元素并使用toString输出shell排序的每个交换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034432/

相关文章:

java - ManyToMany Hibernate保存相关对象

arrays - 如何在awk中初始化数组的数组?

javascript - 是否有新的 ES6+ 运算符的组合可以在对象数组中添加串联字段?

java - 在 Java 中使用方法交换变量

java - 线程 "main"java.lang.NoClassDefFoundError : org/springframework/core/metrics/ApplicationStartup 中出现异常

java - 调用 Clojure 代码时无法编译 Java 类

java - 将 int 与 char 数组中的值相乘不起作用

C++ 将数组分配给彼此; type int* = type int 有效但 int = int*?

android - 如何在android中交换 Canvas 上的图像?

java - 如何返回对字符串的更改