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

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

作者: HYC_ | 来源:发表于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手写编程系列】手写一个冒泡排序

    一、题目 题目:手写一个冒泡排序 测试用例: 二、思路 依次比较相邻的两个数,如果不符合排序规则,则调换两个数的位...

  • 算法

    排序算法有哪些?最快的排序算法是哪个?手写一个冒泡排序手写快速排序代码快速排序的过程、时间复杂度、空间复杂度手写堆...

  • 算法

    排序算法有哪些? 最快的排序算法是哪个? 手写一个冒泡排序 手写快速排序代码 快速排序的过程、时间复杂度、空间复杂...

  • 搜狗面试

    原型链上手写事件,手写原生js实现ajax事件,jsonp实现原理,阻止事件IE冒泡代码,事件捕获、处理,冒泡代码...

  • 面试常见算法题你会多少?

    罗列一下常见算法题 看看你会多少?后续会更新上解析 排序算法有哪些?最快的排序算法是哪个?手写一个冒泡排序手写快速...

  • 手写冒泡排序

    冒泡排序的原理:不断比较相邻元素,如果前一个比后一个大,就元素交换,直到没有需要比较的元素。 优化后的 选择排序的...

  • 常见的算法

    冒泡排序算法 冒泡排序作为一种最为常见的排序算法,很多企业的笔试当中经常出现,通常要求你手写冒泡排序,因此,...

  • iOS 常遇到的面试算法题

    1、手写代码实现一个冒泡排序? 2、手写代码实现一个选择排序? 3、动态规划,1毛、3毛、5毛硬币找零的问题? 4...

  • 【JS编程系列】手写一个快速排序

    一、题目 题目:手写一个快速排序 例子: 二、代码实现 “快速排序”思路: 在数组中,选择一个元素作为“基准”; ...

  • 7.4-全栈Java笔记:三种经典算法

    冒泡排序算法 冒泡排序是最常用的排序算法,在笔试中也非常常见,能手写出冒泡排序算法可以说是基本的素养。 算法重复地...

网友评论

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

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