美文网首页
几个基本的前端排序方法

几个基本的前端排序方法

作者: mills_han | 来源:发表于2018-09-13 14:17 被阅读0次

学习一下几个日常的算法排序问题

1. 冒泡排序

实现:用for循环遍历数组元素,拿出前一个和后一个元素对比,如果前边的值大于后边的值就交换位置,遍历元素进行排序。
图片应该看起来更清晰:


冒泡排序
var arr = [89,12,8,14,23,45,9,15,33];
function bubble_sort(arr){
    var len = arr.length;
    if(arr.length ==1) {
        return
    }
    for(var i = 0; i < len; i++) {
        for(var j = 0; j < len-1; j++) {
          //如果前一个值比后一个值大,那么交换位置
         if(arr[j] > arr[j+1]) {
            var temp = arr[j];
            arr[j]  = arr[j+1];
            arr[j+1] = temp; 
          }
        }
    }
    return arr;
}
//测试一下代码
bubble_sort(arr);
//log [8, 9, 12, 14, 15, 23, 33, 45, 89]

2.快速排序

算法实现:
1.在数据集之中,选择一个元素作为”基准”(pivot)。
2.所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。这个操作称为分区 (partition)操作,分区操作结束后,基准元素所处的位置就是最终排序后它的位置。
3.对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。
图示:


快速排序
function quickSort(arr){
    //如果数组<=1,则直接返回
    if(arr.length<=1){return arr;}
    var pivotIndex=Math.floor(arr.length/2);
    //找基准,并把基准从原数组删除
    var pivot=arr.splice(pivotIndex,1)[0];
    //定义左右数组
    var left=[];
    var right=[];

  //比基准小的放在left,比基准大的放在right
    for(var i=0;i<arr.length;i++){
        if(arr[i]<=pivot){
            left.push(arr[i]);
        } else{
            right.push(arr[i]);
            }
       }
  //递归
  return quickSort(left).concat([pivot],quickSort(right));
}

3.选择排序

算法实现思路:
选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理如下,首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。


选则排序
function selectionSort(array) {
  var length = array.length,
      i,
      j,
      minIndex,
      minValue,
      temp;
  for (i = 0; i < length - 1; i++) {
    minIndex = i;
    minValue = array[minIndex];
    for (j = i + 1; j < length; j++) {
      if (array[j] < minValue) {
        minIndex = j;
        minValue = array[minIndex];
      }
    }
    // 交换位置
    temp = array[i];
    array[i] = minValue;
    array[minIndex] = temp;
  }
  return array
}

参考相关文章

相关文章

  • 几个基本的前端排序方法

    学习一下几个日常的算法排序问题 1. 冒泡排序 实现:用for循环遍历数组元素,拿出前一个和后一个元素对比,如果前...

  • 算法读书笔记-排序算法-初级排序

    排序算法基本结构 在一个排序算法类中可以包含以下几个基本方法(将这几个方法抽象出来后会使代码的可读性变高) 选择排...

  • 前端er常用的几种排序方法

    前端常用的排序方法有:冒泡排序,选择排序,快速排序,插入排序 一、冒泡排序 理解冒泡排序 相邻的两个元素依次比较,...

  • 前端排序方法

    做编程,排序是个必然的需求。前端也不例外,虽然不多,但是你肯定会遇到。 不过说到排序,最容易想到的就是冒泡排序,选...

  • 数据结构基础学习之(内排序)

    学习知识 排序基本概念 插入排序的实现方法及性能分析 交换排序的实现方法及性能分析 选择排序的实现方法及性能分析 ...

  • 冒泡排序算法(C语言)

    排序(冒泡排序算法) 本专题将总结数据结构中几种常见的基本排序方法(后续的几种排序方法将会在整理后发布),意图将计...

  • JAVA 集合框架(三)排序

    对Array的排序 同过Arrays的sort方法。 基本类型的排序 调用Arrays.sort(基本类型数组);...

  • 数据结构课程 第十四周 排序

    基本概念和排序方法概述 这里只讲从小到大! 存储结构: 插入排序 基本思想 直接插入排序 折半插入排序 希尔排序 ...

  • E战到底之不为人知的排序和筛选的高级用法

    1. 排序的基本用法 方法一、选中数据→开始→排序和筛选→升序、降序 方法二、选中数据→数据→升序/降序(↑↓) ...

  • 希尔排序

    希尔排序又称“缩小增量排序”,是对直接插入排序方法的改造。 希尔排序是一种不稳定的排序方法。基本思想是将整个待排记...

网友评论

      本文标题:几个基本的前端排序方法

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