美文网首页
【JS手写编程系列】手写一个冒泡排序

【JS手写编程系列】手写一个冒泡排序

作者: 前端葱叶 | 来源:发表于2021-11-05 00:00 被阅读0次

    一、题目

    题目:手写一个冒泡排序

    测试用例:

        输入:[3, 2, 4, 5, 1]
        输出:[1, 2, 3, 4, 5]
    
        输入:[5, 2, 4, 7, 9, 8, 3, 6, 3, 8, 3]
        输出:[2, 3, 3, 3, 4, 5, 6, 7, 8, 8, 9]
    

    二、思路

    1. 依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位置。这样一遍比较下来,能够保证最大(或最小)的数排在最后一位
    2. 再对最后一位以外的数组,重复前面的过程,直至全部排序完成。

    比如:[3, 2, 4, 5, 1]
    冒泡步骤:

    1. 第一位的“3”与第二位的“2”进行比较,3大于2,互换位置,数组变成[2, 3, 4, 5, 1]
    2. 第二位的“3”与第三位的“4”进行比较,3小于4,数组不变。
    3. 第三位的“4”与第四位的“5”进行比较,4小于5,数组不变。
    4. 第四位的“5”与第五位的“1”进行比较,5大于1,互换位置,数组变成[2, 3, 4, 1, 5]

    三、代码实现

         const testArr = [3, 2, 4, 5, 1];
    
          var bubbleSort = function (arr) {
            const arrLength = arr.length;
            if (arrLength <= 1) {
              return;
            }
            for (let i = 0; i < arrLength - 1; i++) {
              for (let j = 0; j < arrLength - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                //交换位置
                  let temp = arr[j];
                  arr[j] = arr[j + 1];
                  arr[j + 1] = temp;
                }
              }
            }
            console.log(arr);
            return arr;
          };
    
          bubbleSort(testArr);
    

    缺点:效率低下,很少使用

    相关文章

      网友评论

          本文标题:【JS手写编程系列】手写一个冒泡排序

          本文链接:https://www.haomeiwen.com/subject/wqulzltx.html