方法1: setTimeoutを使用してバブルソートを実装する
function bubbleSortWithTimeout(array) {
let len = array.length;
let swapped;
let timeout = 0;
do {
swapped = false;
for (let i = 0; i < len - 1; i++) {
setTimeout(() => {
if (array[i] > array[i + 1]) {
let temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
swapped = true;
}
}, timeout);
timeout += 100; // 適宜調整してください
}
} while (swapped);
return array;
}
const array = [5, 3, 8, 4, 2];
console.log(bubbleSortWithTimeout(array));
方法2: setTimeoutを使用してマージソートを実装する
function mergeSortWithTimeout(array) {
if (array.length <= 1) {
return array;
}
const middle = Math.floor(array.length / 2);
const left = array.slice(0, middle);
const right = array.slice(middle);
return mergeWithTimeout(mergeSortWithTimeout(left), mergeSortWithTimeout(right));
}
function mergeWithTimeout(left, right) {
let result = [];
let timeout = 0;
while (left.length && right.length) {
setTimeout(() => {
if (left[0] < right[0]) {
result.push(left.shift());
} else {
result.push(right.shift());
}
}, timeout);
timeout += 100; // 適宜調整してください
}
return [...result, ...left, ...right];
}
const array = [5, 3, 8, 4, 2];
console.log(mergeSortWithTimeout(array));
上記のコードは、setTimeoutを使用してバブルソートとマージソートを実装する方法を示しています。コード内のtimeout値を適宜調整して、遅延実行の間隔を調整することができます。
注意点として、setTimeoutは非同期関数であるため、ソートの完了を待つために適切なコールバックやPromiseを使用する必要があることに注意してください。