js排序算法03——选择排序

鲁小肃      2022-02-16     517

关键词:

选排序的思路是首先从要排序的数组中选择最小的和目前的第一位交换位置,然后从剩下的数中选择最小的和第二个位置的数交换位置,再从剩下的数中选择最小的和第三个位置的数交换位置,以此类推,实现代码如下:

function selectSort(arr){
    if(!Array.isArray(arr)){
        return false;          //类型判断
    }    
    else{    
        var flag;
        for(var i=0;i<arr.length;i++){
            var minIndex = i;           //假设最小数的索引
            for (var j = i; j < arr.length; j++) {
                if(arr[j]<arr[minIndex]){
                    minIndex = j;     //找到更小的数,更新索引            
                }
            }    
            if(arr[minIndex]<arr[i]){
                flag = arr[i];
                arr[i] = arr[minIndex];
                arr[minIndex] = flag;
            }        
        }
        return arr;
    }
}

算法分析:无论最好或最坏情况,该算法的时间复杂度总是O(n2),因为每次要走第二个for循环找最小的数,感觉有点坑啊。

算法设计与分析基础5冒泡排序与选择排序

packagecn.xf.algorithm.ch03;importjava.util.ArrayList;importjava.util.Arrays;importjava.util.List;/***数据排序**@authorxiaof**/publicclassSort{ /** *对给定的数组进行排序选择排序法每次选择在当前序列之后的最小值,和当前序列数据进行对换 * *@paraminp 查看详情

js排序算法05——快速排序

终于到了传说中的快速排序算法了,快速排序的思想和归并排序一样,都是采用分治思想,不同之处在于归并每次将数组一分为二,最后将小的数组进行比较,合并为大数组。快排是每次找一个主元,也就是基准数,按照这个基... 查看详情

算法2排序算法:直接选择排序和堆排序

上一篇总结了交换排序的冒泡排序和快速排序。这一篇要总结的是选择排序,选择排序分为直接选择排序和堆排序,主要从以下几点进行总结。1、直接选择排序及算法实现2、堆排序及算法实现 1、直接选择排序及算法实现直... 查看详情

排序算法-选择排序(代码片段)

一、选择排序原理:  选择排序(Selectionsort)是一种简单直观的排序算法。第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后... 查看详情

[转]java常用排序算法/程序员必须掌握的8大排序算法

...载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排 查看详情

排序算法:简单选择排序算法-java实现

排序算法(三):简单选择排序算法-Java实现简单选择算法是除堆排序的另外一种选择排序算法,其也是一种不稳定的排序算法,平均时间复杂度为O(N2),空间时间复杂度为O(1)简单选择算法相对比较简单,并且易于理解,具体排序算... 查看详情

常用的八大排序算法,含java实例(copy)

....com/qqzy168/archive/2013/08/03/3219201.html 分类: 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)分配排序(基数排序) ... 查看详情

排序算法之冒泡选择插入排序(java)(代码片段)

文章目录通过Java实现冒泡、选择、插入排序算法冒泡排序冒泡排序介绍和实现具体代码的实现选择排序选择排序介绍和实现选择排序图解具体代码实现插入排序插入排序介绍和实现插入排序图解具体代码实现通过Java实现冒泡、... 查看详情

算法基础之选择排序

   选择排序是排序算法当中的入门算法,相信学过数据结构与算法的同学都是从这个排序开始的吧。大一接触选择排序算法的时候觉得好简单(相比冒泡排序来说),因为它的实现方式比较接近于人的思维方式。顾名思义... 查看详情

排序算法之选择排序(简单选择排序堆排序)(代码片段)

选择排序(简单选择排序、堆排序)选择排序简单选择排序概念算法实现堆排序概念算法实现后续选择排序选择排序的基本思想是:每一趟在待排序元素中选取关键字最小(或最大)的元素加入有序子序列。... 查看详情

算法学习选择排序(代码片段)

一、引言  上一篇学习了冒泡排序,还是比较简单的一种排序,这一篇学习一下选择排序,也是基础排序的其中一种,手写一遍,加上自己的注释,理解以后写图例,其实算法也不是很高深的东西,记录一下~~二、选择排序算... 查看详情

数据结构选择排序算法示例

基本选择排序编辑排序算法即解决以下问题的算法:输入n个数的序列<a1,a2,a3,...,an>。输出原序列的一个重排<a1*,a2*,a3*,...,an*>;,使得a1*<=a2*<=a3*<=...<=an*排序算法有很多,包括插入排序,冒泡排序,堆排序,归并... 查看详情

图形化排序算法比较:快速排序插入排序选择排序冒泡排序

 图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序  查看详情

排序算法(03)—希尔排序(代码片段)

一、概述希尔排序(ShellSort)是插入排序的一种又称“缩小增量排序”(DiminishingIncrementSort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。在这之前... 查看详情

排序算法之一选择排序

选择排序介绍  选择排序是一直简单直观的排序算法,其算法思想如下:每一次从待排序数据元素集合中选出最小的数据元素(或最大的数据元素),按照顺序依次放在已排好序的数列的最前面(或最后面),数据元素集合不... 查看详情

算法之常见的排序算法

  我们平时说的“排序”,指的是内部排序,即使用内存资源进行排序的。除了内部排序之外,还有外部排序。本文主要介绍内部排序。  内部排序分为插入排序、选择排序、交换排序、归并排序等。其中,插入排序又分为... 查看详情

经典排序算法--简单选择排序

算法简介简单选择排序是一种选择排序。选择排序:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止。白话理解  依然已排队为例,在排队时,有的老师可能会选择这样... 查看详情

排序算法(冒泡排序,选择排序,插入排序,快速排序)

数组的排序算法选择排序每次选择所要排序得数组中的最大值(由大到小排序,由小到大排序则选择最小值)的数组元素,将这个数组元组的值与最前面没有排序的数组元素进行交换,第一次排序之后,最大的数字来到了第一位,再从第... 查看详情