排序方法、其他常用的方法

简介: 快速排序function fast (arr) { if (arr.length <= 1) { return arr } let left = [] let right = [] let p = arr.

快速排序

function fast (arr) {
    if (arr.length <= 1) {
        return arr
    }
    let left = []
    let right = []
    let p = arr.splice(0, 1)[0]
    for (let i = 0, l = arr.length; i < l; i++) {
        if (p > arr[i]) {
            left.push(arr[i])
        } else {
            right.push(arr[i])
        }
    }
    return [].concat(fast(left), [p], fast(right))
}

冒泡排序

function pubble (arr) {
    if (arr.length <= 1) {
        return arr
    }
    for (let i = 0, l = arr.length; i < l - 1; i++) {
        for (let j = i; j < l; j++) {
            if (arr[i] > arr[j]) {
                let temp = arr[i]
                arr[i] = arr[j]
                arr[j] = temp
            }
        }
    }
    return arr
}

插入排序

function insert (arr) {
    for (let i = 1, l = arr.length; i < l; i++) {    
        let temp = arr[i]
        let j = i - 1
        while (j >= 0 && arr[j] > temp) {
            arr[j + 1] = arr[j]
            j--
        }
        arr[j + 1] = temp
    }
    return arr
}

选择排序

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

经典阶乘函数

function factorial(num){
    if(num<=1){
        return 1;
    }else{
        return num*arguments.callee(num-1);
    }
}
console.log(factorial(4));//24

函数节流

delayFunc(fn, interval) {
  let _self = fn;
  let timer;
  let firstTime = true;
  return function () {
      let args = arguments;
      let _me = this;
      if (firstTime) {
          _self.apply(_me, args);
          firstTime = false;
          return false;
      }
      if (timer) {
          return false;
      }
      timer = setTimeout(function () {
          clearTimeout(timer);
          timer = null;
          _self.apply(_me, args);
      }, interval || 500);
  };
},
相关文章
|
4月前
|
搜索推荐
|
搜索推荐 算法 Java
选择排序算法:简单但有效的排序方法
在计算机科学中,排序算法是基础且重要的主题之一。选择排序(Selection Sort)是其中一个简单但非常有用的排序算法。本文将详细介绍选择排序的原理和步骤,并提供Java语言的实现示例。
205 1
选择排序算法:简单但有效的排序方法
|
6月前
|
存储 算法 搜索推荐
排序方法8大总结
排序方法8大总结
|
6月前
|
JavaScript 搜索推荐 前端开发
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
JS数组自定义排序方法,冒泡排序、插入排序、选择排序和快速排序。
75 0
|
算法 搜索推荐 Shell
Shell编程之数组排序算法(冒泡排序、直接选择排序、反转排序)
1、数组排序(使用tr、sort、for) 操作步骤; 使用tr命令将数组内每个元素之间的空格替换为换行符; 之后使用sort命令按从小到大重新排序; 最后使用for循环遍历排序后的元素值。
480 0
LetCode第912题 排序数组之冒泡排序
依次比较相邻的两du个数,将小数放在前面zhi,大数放在后面。即首先比较第dao1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
52 0
LetCode第912题 排序数组之冒泡排序
|
算法 搜索推荐 Java
数组的四种排序方法介绍
数组的四种排序方法介绍
294 0
|
算法 搜索推荐 API
算法排序3——选择排序
算法排序3——选择排序
112 0
算法排序3——选择排序
|
算法 搜索推荐 Java
【算法篇】/*冒泡排序 选择排序 反转排序 三大排序算法*/
【算法篇】/*冒泡排序 选择排序 反转排序 三大排序算法*/
117 0
【算法篇】/*冒泡排序 选择排序 反转排序 三大排序算法*/
|
搜索推荐 算法 Java
排序:冒泡排序(算法)
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。
282 0
排序:冒泡排序(算法)