Java-如何交换2个数组元素并使用toString输出shell-排序的每个交换?
Java-How to swap 2 array elements and use toString to output each swap of shell-sort?
我对 Java 还是很陌生,这是学校的作业,我要在其中创建 ShellSort class 和驱动程序 class。 ShellSort class 应该创建并填充一个 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
}
}
我不知道如何用数组 [s+gap] 交换数组 [s] 以及如何在每次交换时使用 toString 输出数组。
我试过使用"temp"变量来放入数组[s],这样我就可以将数组[s+gap]放入数组[s]的索引中,但我收到了"ShellArray@7c53a9eb" 错误?
任何帮助将不胜感激!谢谢。
- 要打印数组,请使用
System.out.println(Arrays.toString(array))
要交换数组元素,
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 循环中。
我对 Java 还是很陌生,这是学校的作业,我要在其中创建 ShellSort class 和驱动程序 class。 ShellSort class 应该创建并填充一个 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
}
}
我不知道如何用数组 [s+gap] 交换数组 [s] 以及如何在每次交换时使用 toString 输出数组。
我试过使用"temp"变量来放入数组[s],这样我就可以将数组[s+gap]放入数组[s]的索引中,但我收到了"ShellArray@7c53a9eb" 错误?
任何帮助将不胜感激!谢谢。
- 要打印数组,请使用
System.out.println(Arrays.toString(array))
要交换数组元素,
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 循环中。