首页 > 编程语言 >JavaScript 实现 -- 选择排序

JavaScript 实现 -- 选择排序

时间:2022-10-22 23:31:37浏览次数:57  
标签:minIndex arr 遍历 -- JavaScript 数组 var 排序

选择排序

选择排序是一种简单直观的排序算法。

原理

第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。依次类推完成整个数组的排序。

数组 arr = [4,1,6,3,5,2] 进行选择排序。首先遍历一次数组找出最小值 1 ,放在首位。然后遍历第二次找出次小值 2 放在第二位,接着遍历排序,直到排完这个数组。 在这里插入图片描述

代码实现

 		Array.prototype.selectionSort = function(){   
            for(var i = 0; i < this.length-1; i++){
                var minIndex = i
                for( var j = i ; j < this.length; j++){
                    if( this[j] < this[minIndex] ){ 
                        minIndex = j;			
                    } 
                }
                if(minIndex !== i){
                	[ arr[i], arr[minIndex] ] = [ arr[minIndex], arr[i] ]; //交换位置
                }
            }
        }
        var arr = [4,1,6,3,5,2];
        arr.selectionSort();
        console.log(arr);	// [1, 2, 3, 4, 5, 6]

时间复杂度和稳定性

  • 选择排序的时间复杂度是O(n^2);

  • 选择排序是不稳定的排序算法;

标签:minIndex,arr,遍历,--,JavaScript,数组,var,排序
From: https://blog.51cto.com/u_15718546/5786216

相关文章

  • JavaScript 实现 -- 希尔排序
    希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”(DiminishingIncrementSort),是插入排序的一种更高效的改进版本。希尔排序实际上就是分组的插入排序,希尔排序以步长......
  • nan踩坑记
    检查数据如果输入的是图片数据,先检查是否有打不开的图片/大小明显异常的图片;检查输入模型的数据是否与所使用的loss函数提供接口中的要求相一致。检查所有除式中的......
  • GitHub Pages 和 Jekyll 笔记
    GitHubPages和Jekyll笔记快速创建(使用默认的Jekyll引擎)1.新建仓库新建一个空仓库,名称为username.github.io,其中username就是你的GitHub账号名称2.增加文......
  • nvue跟随软件
    nvue跟随软件uni.onKeyboardHeightChange(item=>{ //获取系统信息 let_sysInfo=uni.getSystemInfoSync(); let_heightDiff=_sysInfo.screenHeight-_sysInfo......
  • 熟悉编程语言
    熟悉编程语言最受欢迎的编程语言top50这50种编程语言的编程泛型命令式:FORTRAN、BASIC、C++面向过程:C、COBOL、Fortran面向对象:C++、Java、PHP、python、go、Obj......
  • ubuntu2004使用bind9配置dns服务器
    使用bind9可以配置的NDS服务器类型有五种:分别为缓冲服务器、主服务器、从服务器、混合服务器以及私密服务器。这次主要试了下主服务器。1.安装bind9 sudoapt-getins......
  • Python元类详解
    目录PythonMetaClass一、万物皆对象1、简介2、Python对象3、type|object|class3.1关系3.2创建类的第二中方式二、元类1、什么是元类2、调用流程3、函数做元类4......
  • 2022-2023-1 20221419 《计算机基础与程序设计》第8周学习总结
    2022-2023-120221419《计算机基础与程序设计》第8周学习总结作业信息班级:[2022-2023-1-计算机基础与程序设计]https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP......
  • 面向对象
    三大特性封装利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对......
  • [网鼎杯 2018]Fakebook
    打开题目  jion注册,点击admin进入主页  发现注入点no?no=1and1=1正常?no=1and1=1报错猜列数    菜擦才能得出基本为分几次日本v人vgtr给他人......