const arrs = [19, 4, 7, 6, 2, 5, 8, 1];

    1. /**
    2. *
    3. * @param {*} preItem 前一个元素值
    4. * @param {*} nextItem 后一个元素值
    5. * @returns
    6. */
    7. function compare (preItem, nextItem) {
    8. return preItem > nextItem;
    9. }
    10. /**
    11. *
    12. * @param {*} arr 当前数组
    13. * @param {*} pre 前一个索引值
    14. * @param {*} next 下一个索引值
    15. */
    16. function isChange (arr, pre, next) {
    17. const temp = arr[pre];
    18. arr[pre] = arr[next];
    19. arr[next] = temp;
    20. }
    21. /**
    22. *
    23. * @param {*} arr 待排序数组
    24. */
    25. function sort (arr) {
    26. for (let i = 0; i < arr.length; i++) {
    27. let maxIndex = 0;
    28. for (let j = 1; j < arr.length - 1 - i; j++) {
    29. if (compare(arr[j], arr[j + 1])) {
    30. maxIndex = j; // 先找到最大的index
    31. }
    32. }
    33. isChange(arr, i, maxIndex); // 交换
    34. }
    35. return arr;
    36. }
    37. console.log(sort(arrs));