首页 > 编程语言 >几种简单的排序算法(js实现)

几种简单的排序算法(js实现)

时间:2023-12-12 22:31:48浏览次数:29  
标签:minIndex Sort arr ++ len js 算法 let 排序

排序是日常开发中经常用到的代码,下面是几种常见的排序算法:

冒泡排序(Bubble Sort)

function bubbleSort(arr) {
    let len = arr.length;
    for (let i = 0; i < len - 1; i++) {
        for (let j = 0; j < len - 1 - i; j++) {
            if (arr[j] > arr[j + 1]) {
                // 交换元素
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
    return arr;
}

选择排序(Selection Sort)

function selectionSort(arr) {
    let len = arr.length;
    for (let i = 0; i < len - 1; i++) {
        let minIndex = i;
        for (let j = i + 1; j < len; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j;
            }
        }
        // 交换元素
        let temp = arr[i];
        arr[i] = arr[minIndex];
        arr[minIndex] = temp;
    }
    return arr;
}

插入排序(Insertion Sort)

function insertionSort(arr) {
    let len = arr.length;
    for (let i = 1; i < len; i++) {
        let current = arr[i];
        let j = i - 1;
        while (j >= 0 && arr[j] > current) {
            arr[j + 1] = arr[j];
            j--;
        }
        arr[j + 1] = current;
    }
    return arr;
}

快速排序(Quick Sort)

function quickSort(arr) {
    if (arr.length <= 1) {
        return arr;
    }

    let pivotIndex = Math.floor(arr.length / 2);
    let pivot = arr.splice(pivotIndex, 1)[0];
    let left = [];
    let right = [];

    for (let 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));
}


标签:minIndex,Sort,arr,++,len,js,算法,let,排序
From: https://blog.51cto.com/u_16340211/8791686

相关文章

  • js29
    1、使用requests的get()函数访问必应网站20次,打印返回状态,text()内容,计算text属性和content属性所返回网页内容的长度。代码如下:importrequestsforiinrange(20):r=requests.get('https://cn.bing.com',verify=False)r.encoding="utf-8"print(r.status_code)......
  • Java登陆第二十三天——JavaScript对象、JSON、事件
    JS中声明对象的两种格式方法1,newobject()然后依次添加属性或方法栗子:<script>//初始化对象varuser=newObject();//给对象添加属性并赋值user.name="张三";user.age=18;//给对象添加方法user.say=functi......
  • 机器学习中的算法——逻辑回归
    1.逻辑回归的定位机器学习分有监督和无监督以及半监督学习三种,其中有监督学习主要分为分类问题和回归问题;无监督主要是聚类的算法其中逻辑回归是属于分类问题跟上次讲的线性回归有不同,从字面上确实容易混淆2.逻辑回归的概念逻辑回归是在线性回归的基础上加上一个非线性......
  • Excel-排序和筛选
    一、排序单条目排序多条目排序【根据订单好、日期进行排序,注意先订单号,再日期】 自定义排序二、筛选 ......
  • vscode settings.json
    {"workbench.startupEditor":"none","workbench.iconTheme":"vscode-icons","workbench.colorTheme":"Dracula","window.title":"${rootName}${separator}${profileName}",......
  • 递归算法
    递归算法是一种特殊的算法,它在一个问题中调用自身来求解。在递归中,一个函数会调用自身,通常是为了简化问题的规模,或者逐步逼近问题的答案。递归算法通常包括两个主要部分:基准情况(BaseCase):这是递归过程的终止条件。如果没有满足这个条件,递归将继续进行。递归情况(RecursiveCase):......
  • json to dart插件的使用
    先说一种andriodstudio中的一个插件,就叫jsonto dart,你把json文件粘贴过去,然后他可以直接生成dart对象文件,但是通常需要自定义一些配置,否则代码很难读。下面是命令的形式在Flutter开发中,你可以使用一些插件来将JSON转换为Dart类。其中一个常用的插件是dart:convert包提供的......
  • Python——第五章:json模块
    什么是json:json模块是用于处理JSON(JavaScriptObjectNotation)数据的模块,翻译过来叫js对象简谱。JSON是一种轻量级的数据交换格式,常用于将数据在不同语言之间进行传递。我们先来看一段json代码:wf={"name":"汪峰","age":18,"hobby":"上头条","wife"......
  • nodejs的http.request最大响应体
    nodejs的http.request躺坑记录1、http.request之response.on("data",(chunk:Buffer)=>{})的chunk大小​ 由于nodejs的response.on("data")每次从服务端读取的chunk大小最大是65535Byte,并且查很多网站都找不大这个说明点所以狠狠踩了这个坑。这个65535有什么影响呢。本来编写的......
  • JSSDK获取signature签名,史上最全,没有之一
    微信公众号JSSDK获取signature签名,史上最全,没有之一1.操作流程1、通过appId和appSecret获取access_token;2、使用access_token获取jsapi_ticket;3、用时间戳、随机数、jsapi_ticket和要访问的url按照签名算法拼接字符串;4、对第三步得到的字符串进行SHA1加密,得到签名。2.上代码获取a......