美文网首页
排序算法总结

排序算法总结

作者: 飞飞廉 | 来源:发表于2018-03-20 10:28 被阅读0次
冒泡法:

思路:每次循环都两两比较,每循环一次都把最大的值放在后边。

function bubbleSort(arr) {
        var len = arr.length;
        for (var i = 0; i < len; i++) {
            for (var j = 0; j < len - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    var temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        return arr;
    }
选择排序法:

思路:从一个未知数据空间,选取数据之最放到一个新的空间。

function selectSort(arr) {
        var len = arr.length;
        var minIndex = 0;
        for (var i = 0; i < len - 1; i++) {
            minIndex = i;
            for (var j = i + 1; j < len; j++) {
                if (arr[j] < arr[minIndex]) {
                    minIndex = j;
                }
            }
            var temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        return arr
    }

插入排序

思路:在一个数组中我们不知道哪个是最小值,那么就假定第一个就是最小值,然后取第二个值与第一个值比较产排序后的序列,然后再取第三个值与排序后的序列进行比较插入到对应的位置,依次类推。

 function insertSort(arr) {
        var len = arr.length;
        for (var i = 1; i < len; i++) {
            var key = arr[i];
            var j = i - 1;
            while (arr[j] > key) {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = key;

        }
        return arr;
    }
归并排序

思路:每次把数组分割成一半,再把两个排好序的数组合并成一个有序数组,然后每一层递归,当数组长度小于2的时候就返回数组。

function mergeSort(arr){
        var len=arr.length;
        if(len<2){
            return arr;
        }
        var mid=Math.floor(len/2)
        var left=arr.slice(0,mid)
        var right=arr.slice(mid)
        return merge(mergeSort(left),mergeSort(right))
       }
       function merge(left,right){
        var res=[];
        while(left.length && right.length){
            if(left[0]<=right[0]){
                res.push(left.shift())
            }else{
                res.push(right.shift())
            }
        }
        while(left.length){
            res.push(left.shift())
        }
        while(right.length){
            res.push(right.shift())
        }
        return res;
       }
快速排序

思路:每次选择一个基准值,建立两个数组,小雨这个基准值的就放left里,大于这个基准值的就放right里,然后再把left,基准值,right连接起来组成一个数组,然后再递归就可以了

 function quickSort(arr){
        var len=arr.length;
        if(len<2){
            return arr;
        }
        var mid=arr.splice(Math.floor(len/2),1)[0];
        var left=[],right=[];
        for (var i = 0; i < arr.length; i++) {
            if(arr[i]<mid){
                left.push(arr[i])
            }else{
                right.push(arr[i])
            }
        }
        return quickSort(left).concat([mid],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/ufrvqftx.html