我正在用JavaScript编写排序算法可视化工具。到目前为止,代码可以正常工作,但是仍然存在性能问题。
我正在尝试使交换功能运行1毫秒(speed.value)。但是,除了前4个交换,每个交换调用平均需要4毫秒才能解决。代码如下所示:
async function bubbleSort(arr,start,end) {
for (i = start; i < end; i++) {
for (j = start; j < end - i - 1; j++) {
if (arr[j].val > arr[j + 1].val) {
await swap(arr,j,j + 1);
}
}
j = 0;
}
}
async function swap(arr,a,b) {
var t3 = performance.now();
await delay(speed.value);
Bars_c.push({ a,b });
var temp = arr[a].val;
arr[a].val = arr[b].val;
arr[b].val = temp;
swapOnGraph(arr,b);
var t4 = performance.now();
console.log(t4 - t3);
}
function delay(ms) {
return new Promise(resolve => setTimeout(resolve,ms));
}
没有“ await delay(speed.value)”,每个交换只需不到一毫秒即可完成。并且仅测试该函数就表明它在交换之外可以按预期工作,因此delay()重写似乎毫无意义。如何更改代码,以便每次交换需要1毫秒才能运行。