如何在按下按钮时只执行一次交换?


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; 
} 

我正试图为以下算法添加一个步骤特征。当按下step按钮时,我希望执行一次交换,并执行其后的代码。我已经尝试使用休息和继续,但这并没有给我我正在寻找的结果。如何在每次按下按钮时简单地交换数据集中的两个元素?

如果我是你,我会复制数组,并在后台处理复制的版本,并存储一个交换列表。

,每次按钮被按下时,我只是获取列表的顶部元素并交换索引。

示例:这个基于0的数组3 1 2交换的列表将是0 11 2

在按下第一个按钮时,我将交换[0]和[1]在第二次按下按钮时,我将交换[1]和[2]

相关内容

  • 没有找到相关文章