如何在按下按钮时只执行一次交换?
How can I perform only one swap on button press?
async bubbleSort(values, size) {
sort_button = true;
for(var i = 0; i < size - 1; i++) {
for(var j = 0; j < size - i - 1; j++) {
if(values[j] >= values[j + 1]) {
states[j] = 1; // << Highlight comparisons
states[j + 1] = 1;
if (step_button == true) {
// TODO: Swap only two elements
} else if (step_button != true) {
await this.swap(values, j, j + 1);
}
}
states[j] = 2;
}
states[j] = 0; // << Sorted Order
}
sort_button = false;
return values;
}
我正在尝试为以下算法添加一个步骤特征。当按下步骤按钮时,我希望执行一次交换并执行其后的代码。我试过使用 break and continue 但这并没有给我想要的结果。如何在每次按下按钮时简单地交换数据集中的两个元素?
如果我是你,我会复制数组并在后台处理复制的版本并存储交换列表。
每次按下按钮时,我只获取列表的顶部元素并交换索引。
示例:这个从 0 开始的数组
3 1 2
掉期清单将是
0 1
1 2
所以
在第一次按下按钮时,我会交换 a[0] 和 a[1]
在按下第二个按钮时,我会交换 a[1] 和 a[2]
async bubbleSort(values, size) {
sort_button = true;
for(var i = 0; i < size - 1; i++) {
for(var j = 0; j < size - i - 1; j++) {
if(values[j] >= values[j + 1]) {
states[j] = 1; // << Highlight comparisons
states[j + 1] = 1;
if (step_button == true) {
// TODO: Swap only two elements
} else if (step_button != true) {
await this.swap(values, j, j + 1);
}
}
states[j] = 2;
}
states[j] = 0; // << Sorted Order
}
sort_button = false;
return values;
}
我正在尝试为以下算法添加一个步骤特征。当按下步骤按钮时,我希望执行一次交换并执行其后的代码。我试过使用 break and continue 但这并没有给我想要的结果。如何在每次按下按钮时简单地交换数据集中的两个元素?
如果我是你,我会复制数组并在后台处理复制的版本并存储交换列表。
每次按下按钮时,我只获取列表的顶部元素并交换索引。
示例:这个从 0 开始的数组 3 1 2 掉期清单将是 0 1 1 2
所以 在第一次按下按钮时,我会交换 a[0] 和 a[1] 在按下第二个按钮时,我会交换 a[1] 和 a[2]