Algo : comparaisons

 let tab = [1, 2, 3, -1, 6, 6, 1, 2, 2, 1];

let i = 0;
while (i < tab.length) {
  let j = i + 1;
  while (j < tab.length) {
    if (tab[i] === tab[j]) {
      // Swap elements
      [tab[i + 1], tab[j]] = [tab[j], tab[i + 1]];
      i++;
    }
    j++;
  }
  i++;
}

[ 1, 1, 1, -1, 6, 6, 2, 2, 2, 3 ]

let groups = tab.reduce((acc, num) => {
  acc[num] = acc[num] || [];
  acc[num].push(num);
  return acc;
}, {});

let result = [].concat(...Object.values(groups));

console.log(result);

┌─────────┬────────┐ │ (index) │ Values │ ├─────────┼────────┤ │ 0 │ 1 │ │ 1 │ 1 │ │ 2 │ 1 │ │ 3 │ 2 │ │ 4 │ 2 │ │ 5 │ 2 │ │ 6 │ 3 │ │ 7 │ 6 │ │ 8 │ 6 │ │ 9 │ -1 │ └─────────┴────────┘