美文网首页
前端算法详解——排序

前端算法详解——排序

作者: 诺奕 | 来源:发表于2018-08-30 22:23 被阅读126次
一、概述

1. 常见的排序算法?

1.冒泡排序
    每次比较相邻的两个数,如果后一个比前一个小,换位置
2.选择排序
    每次站在自己的位置上,往下找,找打最小数,然后和当前换位置
3.归并排序
    采用了二分法,左边一个排好的数组,右边一个排好的数组,每次比较左右第一个数,小的放在一个新的数组里
4.快速排序
    采用了二分法,取出中间数,数组,每次和中间数比较,小的放在左边,大的放到右边

2. 算法没有完美的算法,只有合适的算法
3. 怎么去平衡一个算法好坏?

    1.时间角度(程序跑多长时间)
    2.空间角度(硬盘,越小越好)
二、 冒泡排序
  var arr = [12, 233, -90, 23, -80];
    function bubbleSort(arr) {
        for (var i = 0; i < arr.length - 1; i++) {
            for (var j = 0; j < arr.length; j++) {
                if (arr[j + 1] < arr[j]) {
                    var tmp;//换位置找中间值
                    tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;

                }
            }
        }
        return arr;
    }
    document.write(bubbleSort(arr));
三、 二分排序
  var arr = [12, 233, -90, 23, -80];
    function mySort(arr, s, e) {
        if (s > e) {
            return [];
        } else if (s == e) {
            return [arr[e]];
        }
        var c = Math.floor((s + e) / 2);
        var left = mySort(arr, s, c);
        var right = mySort(arr, c + 1, e);
        var result = [];
        while (left.length > 0 || right.length > 0) {
            if (left[0] < right[0]) {
                result.push(left.shift());
            } else {
                result.push(right.shift());
            }
            if (left.length == 0) {
                result = result.concat(right);
                break;
            } else if (right.length == 0) {
                result = result.concat(left);
                break;
            }
        }
        return result;
    };
    document.write(mySort(arr, 0, arr.length - 1));
四、 快速排序
  var arr = [12, 233, -90, 23, -80];
    function quickSort(arr) {
        if (arr.length <= 0) {
            return [];
        }
        var cIndex = Math.floor(arr.length / 2);
        var c = arr.splice(cIndex, 1);
        var left = [];
        var right = [];
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] < c[0]) {
                left.push(arr[i]);
            } else {
                right.push(arr[i]);
            }
        }
        return quickSort(left).concat(c, quickSort(right));
    };
    document.write(quickSort(arr));

相关文章

  • 前端算法详解——排序

    一、概述 1. 常见的排序算法? 2. 算法没有完美的算法,只有合适的算法3. 怎么去平衡一个算法好坏? 二、 冒...

  • 算法相关

    算法复杂度相关概念:漫画:什么是时间复杂度?算法的时间复杂度和空间复杂度详解算法题库:力扣 一、排序算法 排序算法...

  • 排序算法笔记

    总结 算法详解 tips:以下算法中均按从小到大排序 一 冒泡排序/Bubble Sort 思路 采用两两比较并交...

  • 前端排序算法总结;前端面试题2.0;JavaScript异步编程

    1、前端 排序算法总结 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热...

  • 详解排序算法--希尔排序

    希尔排序 希尔排序的由来是根据插入排序的。读者若不了解插入排序,可以参考笔者的详解排序算法--插入排序和冒泡排序....

  • Java 9种排序算法详解和示例汇总

    冒泡排序、选择排序、直接插入排序、二分法排序、希尔排序、快速排序、堆排序、归并排序、基数排序,共9中排序算法详解和...

  • 前端排序算法总结;前端面试题2.0;JavaScript异步编程

    前端排序算法总结;前端面试题2.0;JavaScript异步编程 标签(空格分隔): Node.js 1、前端 排...

  • 排序算法详解

    排序算法是算法理论的基础,可以说只有理解了排序算法,才能更加深入地理解其他更加复杂的算法。简单的排序的算法包括选择...

  • 前端要掌握的几种排序算法

    因为之前面试有问到快排,昨天笔试又有做到关于排序算法的题,所以特地看了一下关于排序算法。前端对算法的要求不高,但是...

  • 详解排序算法--堆排序

    选择排序 选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找...

网友评论

      本文标题:前端算法详解——排序

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