路漫漫其修远兮, 吾将上下而求索

0%

冒泡排序算法是最慢的排序算法之一, 也是最容易实现的排序算法

概念

冒泡排序之所以叫冒泡排序是因为使用这种排序算法排序时, 数据会像气泡一样从数组的一端飘到另一端. 假设正在将一组数字按照升序排列, 较大的值会浮动到数组的右侧, 而较小的值则会浮动到数组的左侧.

阅读全文 »

基础知识

  • Math.ceil(n) 向上取整, 返回大于等于 n 的整数

  • Math.floor(n) 向下取整, 返回 n 的整数部分

  • parseInt(n) 向下取整, 返回 n 的整数部分

  • Math.round(n) 四舍五入取整, 返回 n 四舍五入后的整数

  • Math.random(n) 生成 [0, 1) 的随机数

  • Math.ceil(Math.random()*10) 均衡获取 [1, 10] 之间的随机整数

    代码示例详情
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    let i = 0
    let ret = []
    while(i++ < 1e9) {
    const randomNum = Math.ceil(Math.random()*10)
    if (ret[randomNum]) {
    ret[randomNum]++
    } else {
    ret[randomNum] = 1
    }
    }
    console.table(ret)

    上述代码运行的结果如下:

    node 中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ┌─────────┬───────────┐
    │ (index) │ Values │
    ├─────────┼───────────┤
    │ 1 │ 100004455 │
    │ 2 │ 99992092 │
    │ 3 │ 99995733 │
    │ 4 │ 99989966 │
    │ 5 │ 100006012 │
    │ 6 │ 100004826 │
    │ 7 │ 99999108 │
    │ 8 │ 99994649 │
    │ 9 │ 100004694 │
    │ 10 │ 100008465 │
    └─────────┴───────────┘

    浏览器中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    1: 100002116
    2: 99998960
    3: 100010656
    4: 99996773
    5: 100005989
    6: 99999774
    7: 99997476
    8: 100003979
    9: 99989204
    10: 99995073
  • Math.floor(Math.random()*10) 均衡获取 [0, 9] 的随机整数

    代码示例详情
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    let i = 0
    let ret = []
    while(i++ < 1e9) {
    const randomNum = Math.floor(Math.random()*10)
    if (ret[randomNum]) {
    ret[randomNum]++
    } else {
    ret[randomNum] = 1
    }
    }
    console.table(ret)

    上述代码运行的结果如下:

    node 中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    ┌─────────┬───────────┐
    │ (index) │ Values │
    ├─────────┼───────────┤
    │ 0 │ 100015160 │
    │ 1 │ 100006201 │
    │ 2 │ 99989259 │
    │ 3 │ 99988278 │
    │ 4 │ 100005566 │
    │ 5 │ 100001095 │
    │ 6 │ 100003096 │
    │ 7 │ 99981274 │
    │ 8 │ 100007022 │
    │ 9 │ 100003049 │
    └─────────┴───────────┘

    浏览器中:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    0: 100006310
    1: 100000609
    2: 100001411
    3: 99998525
    4: 99991009
    5: 100001548
    6: 100004093
    7: 99989084
    8: 100013441
    9: 99993970
  • Math.round(Math.random()) 均衡比例获取 0 或者 1

  • Math.round(Math.random()*10) 获取 [0, 10]的随机整数, 其中获取 0 和 10的几率为获取其他值的一半.

    详细原因, 概率一目了然
    随机值范围得到的值
    [0, 0.5)0
    [0.5, 1.5)1
    [1.5, 2.5)2
    [2.5, 3.5)3
    [3.5, 4.5)4
    [4.5, 5.5)5
    [5.5, 6.5)6
    [6.5, 7.5)7
    [7.5, 8.5)8
    [8.5, 9.5)9
    [9.5, 10)10
阅读全文 »