Алгоритм сортировки выбора работает только при передаче массива без 0 - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь реализовать алгоритм сортировки выбора.По какой-то причине это работает только тогда, когда я передаю массив, который не содержит значение 0. Я не могу понять, почему он делает это.

Вот мое решение:

function selectionSort(array) {
  let smallestItem = null;
  let smallestItemIndex = null;
  for(i = 0 ; i < array.length ; i++){
    smallestItemIndex = i;
    for(j = i + 1 ; j < array.length ; j++){
      if(array[smallestItemIndex] > array[j]){
        smallestItem = array[j];
        smallestItemIndex = j;
      } 
    }
    if(smallestItem){
      let temp = array[i];
      array[i] = smallestItem;
      array[smallestItemIndex] = temp;
    }
    smallestItem = null;
  }

1 Ответ

0 голосов
/ 15 февраля 2019

Это происходит потому, что при проверке JS: if(smallestItem){ вернет true как для 0, так и для null - это приведет к пропуску свопа в случае, если наименьший элемент равен 0.

Чтобы исправить это, переключитедо if(smallestItem == null){

...