美文网首页
排序算法总结

排序算法总结

作者: 述云 | 来源:发表于2018-09-17 16:04 被阅读0次

JavaScript实现十大排序算法,代码+动图+在实现代码的时候遇到的坑

冒泡算法

(1) 实现思路

不断的重复的对比相邻的两个元素,把大(小)的移到一个方向去

(2) 代码实现:
bubbleSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      for (let j = 0; j < len - i - 1; j++) {
        if (arr[j + 1] < arr[j]) {
          [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
        }
      }
    }
    return arr
  }
(3)写代码时候容易犯的思路错误:

在if (arr[j + 1] < arr[j]) 这块用 arr[j] 和 arr[i]做比较,
冒泡排序中,外圈循环只是用来计数的。需要做比较的是相邻的两项,就是arr[j] & arr[j + 1]

(4) 动画效果
冒泡排序.png

选择排序

(1) 实现思路

每一次直接选出最小(大)的一个,不断重复

seleteSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      let minIndex = i
      for (let j = i + 1; j < len; j++) {
        if (arr[j] < arr[minIndex]) {
          [arr[minIndex], arr[j]] = [arr[j], arr[minIndex]]
          minIndex = j
        }
      }
    }
    return arr
  },

插入排序

  insertSort (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
      let index = i
      for (let j = i - 1; j >= 0; j--) {
        if (arr[j] > arr[index]) {
          [arr[j], arr[index]] = [arr[index], arr[j]]
          index = j
        }
      }
    }
    return arr
  },

快速排序

  quickSort (arr) {
    let len = arr.length
    if (len <= 1) return arr
    let pivot = Math.floor(len / 2)
    let item = arr.splice(pivot, 1)
    let left = []
    let right = []
    for (let i = 0; i < len - 1; i++) {
      if (arr[i] < item) {
        left.push(arr[i])
      } else {
        right.push(arr[i])
      }
    }
    return this.quickSort(left).concat(item, this.quickSort(right))
  }

相关文章

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • 算法学习(1)-排序算法

    八大排序算法九大排序算法再总结[经典排序算法][集锦][直观学习排序算法] 视觉直观感受若干常用排序算法 快速排序...

  • 面试常问的排序算法

    排序算法总结 排序是算法问题中的经典问题。为什么要总结排序算法呢?你懂的 : (假设所有的排序都是要求最终结果为:...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 排序算法

    一、排序算法总结 排序算法题目 排序算法快速排序堆排序归并排序 应用最小K个数(TopK问题)215.数组中的第K...

  • 一文搞定十大经典排序算法(Java实现)

    本文总结十大经典排序算法及变形,并提供Java实现。参考文章:十大经典排序算法总结(Java语言实现)快速排序算法...

  • Swift的十大经典排序算法总结

    Swift的十大经典排序算法总结 排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 排序算法最强总结及其代码实现(Python/Java)

    前言 本文总结了常用的全部排序算法,内容包括: 排序算法的定义和思路 排序算法的代码实现:Python和Java,...

网友评论

      本文标题:排序算法总结

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