【问题标题】:Java-How to swap 2 array elements and use toString to output each swap of shell-sort?Java-如何交换 2 个数组元素并使用 toString 输出 shell-sort 的每个交换?
【发布时间】:2023-03-13 02:06:01
【问题描述】:

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

这是我目前的代码:

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+gap] 交换数组 [s] 以及如何在每次交换时使用 toString 输出数组。

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

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

【问题讨论】:

    标签: java arrays swap shellsort


    【解决方案1】:
    1. 要打印阵列,请使用System.out.println(Arrays.toString(array))
    2. 交换数组元素,

      if (array[s] > array[s + gap]) { int temp = array[s]; array[s] = array[s + gap]; array[s + gap] = temp; // swap array[s] with array[s+gap] swapflag = true; }

    另外,看来gap = gap/2;应该在第一个do while循环里面。

    【讨论】:

      猜你喜欢
      • 2020-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-01
      • 2012-01-30
      • 1970-01-01
      相关资源
      最近更新 更多