Если функция setTimeout является асинхронной функцией, то есть ли способ визуализировать сортировку слиянием с ее помощью? Если нет, то какая альтернатива? - PullRequest
0 голосов
/ 18 июня 2020

Где именно я должен добавить функцию setTimeout, чтобы визуализировать ее в моем браузере?

ПРИМЕЧАНИЕ: значения массива привязаны к div, поскольку есть ширина, чтобы их можно было визуализировать. Когда я запускаю процесс сортировки слиянием, я вижу изменения, но по какой-то причине сортировка останавливается.

Это происходит только тогда, когда у меня используется функция setTimeout, и в тот момент, когда я удаляю функцию setTimeout, массив сортируется, и я даже вижу визуализацию на экране браузера, но это происходит сразу же, т.е. я не вижу слияния вообще.

Вот мой код сортировки слиянием:

mergesort(low: number, high: number) {
  if (low < high) {
    var mid: number = Math.floor((low + high) / 2);
    setTimeout(() => {
      this.mergesort(low, mid);
      this.mergesort(mid + 1, high);
    }, 2000);
    setTimeout(() => {
      this.mergee(low, mid, high);
    }, );

  }
}
mergee(l: number, m: number, r: number) {
  var i: number, j: number, k: number;
  var n1: number = m - l + 1;
  var n2: number = r - m;

  var L = [];
  var R = [];

  for (i = 0; i < n1; i++)
    L[i] = this.arr[l + i];
  for (j = 0; j < n2; j++)
    R[j] = this.arr[m + 1 + j];

  i = 0;
  j = 0;
  k = l;
  while (i < n1 && j < n2) {
    if (L[i] <= R[j]) {
      this.arr[k] = L[i];
      i++;
    } else {
      this.arr[k] = R[j];
      j++;
    }
    k++;
  }
  while (i < n1) {
    this.arr[k] = L[i];
    i++;
    k++;
  }
  while (j < n2) {
    this.arr[k] = R[j];
    j++;
    k++;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...