java - Java-如何交换 2 个数组元素并使用 toString 输出 shell-sort 的每个交换?
问题描述
我对 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”变量将 array[s] 放入,所以我可以将 array[s+gap] 放入 array[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循环里面。
推荐阅读
- javascript - 在打印设置中,我保留了边距......但它只在第一页上工作。我也想要第二页的页边距顶部
- vue.js - Axios + NUXT ..如何使用 API 中的“slug”数据更新浏览器 url 并在我的页面中更新我的 axios 中的 Base Url 以获取新数据以显示
- python-3.x - 我正在尝试使用 windows 10、visual studio 2019 和 anaconda 从本地源安装 onnx
- visual-studio-2019 - VS2019 的 DynamicMenu 扩展加载菜单太晚了
- python - 在 anaconda 中安装 fastai
- appium - appium studio中连接iphone XR失败
- php -
在 XLM 文件的顶部,而不是底部 - prolog - 在列表列表中查找最大值
- maven - maven:模块需要与父模块不同的版本
- excel - 为什么Excel VBA行高不等于范围高度