java - 打印合并排序和快速排序算法的每一遍
问题描述
我正在尝试输出我为家庭作业编写的合并排序和快速排序算法的每一遍,但我很难弄清楚要打印什么、何时打印以及在哪里放置打印语句. 除了打印值之外,我还需要在每次传递时将算法创建的数组括在括号中,如下所示:
合并排序样本所需的输出:
[ 4 85 94 68 76 75 40 66 18 ]
[ 4 85 94 68 76 ] [ 75 40 66 18 ]
[ 4 85 94 ] [ 68 76 ] [ 75 40 ] [ 66 18 ]
[ 4 85 ] [ 94 ] [ 68 ] [ 76 ] [ 75 ] [ 40 ] [ 66 ] [ 18 ]
[ 4 85 ] [ 94 ]
[ 4 ] [ 85 ]
[ 4 85 ]
[ 4 85 94 ] [ 68 76 ] [ 40 75 ] [ 18 66 ]
[ 4 68 76 85 94 ] [ 18 40 66 75 ]
[ 4 18 40 66 68 75 76 85 94 ]
快速排序样本所需的输出:
[ 47 44 39 77 80 19 49 45 65 ]
[ 44 39 19 45 ] [ 47 ] [ 77 80 49 65 ]
[ 39 19 ] [ 44 ] [ 45 ] [ 47 ] [ 49 65 ] [ 77 ] [ 80 ]
[ 19 ] [ 39 ] [ 44 ] [ 45 ] [ 47 ] [ 49 ] [ 65 ] [ 77 ] [ 80 ]
我的课程几乎没有进入堆栈和递归函数,所以我目前只是有点卡住了。这是每种排序算法的两个函数:
合并排序算法:
public static void MergeSort(int[] array) {
int size = array.length;
if (size < 2)
return;
int mid = size / 2;
int leftSize = mid;
int rightSize = size - mid;
int[] left = new int[leftSize];
int[] right = new int[rightSize];
for (int i = 0; i < mid; i++) {
left[i] = array[i];
}
for (int i = mid; i < size; i++) {
right[i - mid] = array[i];
}
MergeSort(left);
MergeSort(right);
Merge(array, left, right);
}
public static void Merge(int[] array, int[] left, int[] right) {
int leftSize = left.length;
int rightSize = right.length;
int i = 0, j = 0, k = 0;
while (i < leftSize && j < rightSize) {
if (left[i] <= right[j]) {
array[k] = left[i];
i++;
k++;
} else {
array[k] = right[j];
k++;
j++;
}
}
while (i < leftSize) {
array[k] = left[i];
k++;
i++;
}
while (j < rightSize) {
array[k] = right[j];
k++;
j++;
}
}
快速排序:
public static void QuickSort(int[] array, int left, int right) {
int pivotIndex = left + (right - left) / 2;
int pivotValue = array[pivotIndex];
int i = left;
int j = right;
while(i <= j) {
while(array[i] < pivotValue) {
i++;
}
while(array[j] > pivotValue) {
j--;
}
if(i <= j) {
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
i++;
j--;
}
if(left < i) {
QuickSort(array, left, j);
}
if(right > i) {
QuickSort(array, i, right);
}
}
}
解决方案
推荐阅读
- postgresql - 如何在 postgresql r2dbc 中获取选择查询的结果?
- react-native - 没有参数的函数上的 SOAP-EVERYWHERE
- regex - 正则表达式匹配问题到测试字符串
- reactjs - 添加到购物车按钮应该与数量按钮映射我应该如何映射?
- python - 传感器的模拟输入到数字输出转换器代码
- html - 搜索完成后是否可以将搜索文本保留在表单中?
- php - 在 WordPress/WooCommerce/WCFM 多供应商插件中出现数据表错误
- python - PySimpleGui 无法访问 InputCombo 中的列表
- unix - 在unix中删除带分隔符的文本
- typescript - 打字稿排除
是类型“从不”