Не произвелась пузырьковая сортировка в JavaScript

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

const diap = [1 , 3 , 5 , 7 , 9 , 11, 13, 15, 16, 18];

function getMeSomeShit(shitLength) {
    if (!(typeof shitLength === 'number' || typeof shitLength === 'bigint')) {
        console.error("a-ta-ta give a number");
        return;
    }

const arrayToFulfillRandomNumbers = [];
for (let numberCounter = 0; numberCounter < shitLength; numberCounter++) {
    arrayToFulfillRandomNumbers.push(getRandomShit())
}

return arrayToFulfillRandomNumbers;
}

function getRandomShit() {
    return diap[Math.floor(Math.random() * diap.length)];
}

function bubbleSort(getMeSomeShit) {
    let swapped;

do {
    swapped = false;
    console.log(getMeSomeShit);
    getMeSomeShit.forEach((item, index) => {
        if (item > getMeSomeShit[index + 1]) {
         let temp = item;
         getMeSomeShit[index] = getMeSomeShit[index + 1];
         getMeSomeShit[index + 1] = temp;
         swapped = true;   
        }
    })
} while (swapped);
}

console.log(getMeSomeShit(6));

Ответы (3 шт):

Автор решения: Anastasiya

Мне кажется, дело все в том, что swapped становится true после одного обмена. А необходимо отсортировать все элементы массива. Я бы сделала двойной вложенный цикл, типа

for(let i=0; i < array.length - 1; i++) {
    for(let j=0; j<array.length-i-1; j++) {
        if(array[j] >array[j+1]){
            let temp = array[j] ;
            array[j] = array[j+1];
            array[j+1]=temp;
        }
    } 
} 

return array;

Пс за js ссори, пишу на java

→ Ссылка
Автор решения: DiD

const diap = [1, 3, 5, 7, 9, 11, 13, 15, 16, 18];

function getMeSomeShit(shitLength) {
  if (!(typeof shitLength === 'number' || typeof shitLength === 'bigint')) {
    console.error("a-ta-ta give a number");
    return;
  }

  const arrayToFulfillRandomNumbers = [];
  for (let numberCounter = 0; numberCounter < shitLength; numberCounter++) {
    arrayToFulfillRandomNumbers.push(getRandomShit())
  }

  return arrayToFulfillRandomNumbers;
}

function getRandomShit() {
  return diap[Math.floor(Math.random() * diap.length)];
}

function bubbleSort(getMeSomeShit) {
  let swapped;

  do {
    swapped = false;
    getMeSomeShit.forEach((item, index) => {
      if (!index) return;
      if (item < getMeSomeShit[index - 1]) {
        [getMeSomeShit[index], getMeSomeShit[index - 1]] =
          [getMeSomeShit[index - 1], getMeSomeShit[index]];
        swapped = true;
      }
    })
  } while (swapped);
  return getMeSomeShit;
}

console.log(bubbleSort(getMeSomeShit(6)));

→ Ссылка
Автор решения: Aziz Umarov

Вот так думаю сделать будет чуток по современному.

let diap = [1, 3, 5, 7, 9, 11, 13, 15, 16, 18];

diap = diap.sort(_ => Math.random() - 0.5); // перемешиваем

function bubbleSort(array) {
  for(let i = 0; i < array.length - 1; i++) {
    for(let j = 0; j < array.length - i - 1; j++) {
        if(array[j]>array[j+1]){
            [array[j], array[j+1]] = [array[j+1], array[j]];
        }
    } 
  }
  return array;
}

console.log(diap);

console.log(bubbleSort([...diap]));

→ Ссылка