zoukankan      html  css  js  c++  java
  • 冒泡排序

    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>冒泡排序</title>
    </head>
    <body>
    </body>
    <script>
      function swap(array, a, b) {
        /* const temp = array[a];
        array[a] = array[b];
        array[b] = temp; */ // 经典方式
        [array[a], array[b]] = [array[b], array[a]]; // ES2015的方式
      }
      function defaultCompare(a,b) {
        return a < b ? 0 : 1
      }
      function bubbleSort(array, compareFn = defaultCompare) {
      const { length } = array; // {1}
      for (let i = 0; i < length; i++) { // {2}
        for (let j = 0; j < length - 1; j++) { // {3}
          debugger;
          if (compareFn(array[j], array[j + 1]) === 1) { // {4}
            swap(array, j, j + 1); // {5}
          }
        }
      }
      return array;
    }
      function createNonSortedArray(size) { // {6}
      const array = [];
      for (let i = size; i > 0; i--) {
        array.push(i);
      }
      return array;
    }
    
    let array = createNonSortedArray(5); // {7}
    console.log(array.join()); // {8}
    array = bubbleSort(array); // {9}
    console.log(array.join()); //{10}
    </script>
    </html>

    外层循环从第一次循环到最后一次,比如 [5, 4, 3, 2, 1] 这个数组我们循环了五次

    for (let i = 0; i < length; i++) { // {2}

    循环了五次

    内循环将从第一位迭代至倒数第二位,内循环实际上进行当前项和下一项的比较(行{4})。如果这两项顺序不对(当前项比下一项大),则交换它们(行{5}),意思是位置为j+1的值将会被换置到位置j处,反之亦然。

    for (let j = 0; j < length - 1; j++) { 

    对比函数:

     function defaultCompare(a,b) {
        return a < b ? 0 : 1
      }

    如果a小于b 就返回 数值 0,a大于b 就返回数据 1  ,当返回数据1  的时候我们进行数值交换 

     function swap(array, a, b) {
        /* const temp = array[a];
        array[a] = array[b];
        array[b] = temp; */ // 经典方式
        [array[a], array[b]] = [array[b], array[a]]; // ES2015的方式
      }

    将 a,b 的位置交换

    面的示意图展示了冒泡排序的工作过程。

     

  • 相关阅读:
    分页字符串帮助类
    CSS--九宫格滑过变红色
    css --- flex布局
    MongoDB数据库
    background属性和position属性
    js------this关键字
    js程序-- DNA相关问题
    express4.X--中间件
    CSS——<img>标签图片适配居中问题
    git学习———建立git仓库上传github和从github上下载工程
  • 原文地址:https://www.cnblogs.com/guangzhou11/p/11706198.html
Copyright © 2011-2022 走看看