选择排序之javascript

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

2.1 算法描述

n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下:

  • 初始状态:无序区为R[1..n],有序区为空;
  • 第i趟排序(i=1,2,3…n-1)开始时,当前有序区和无序区分别为R[1..i-1]和R(i..n)。该趟排序从当前无序区中-选出关键字最小的记录 R[k],将它与无序区的第1个记录R交换,使R[1..i]和R[i+1..n)分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区;
  • n-1趟结束,数组有序化了。
   <script type="text/javascript">

        var  SelectionSort ={};
        SelectionSort.arr =[];
        SelectionSort.init =function(){
            var arr =this.arr;
            arr.length =0;
            arr.push(3);
            arr.push(5);
            arr.push(2);
            arr.push(1);
            arr.push(9);
            arr.push(11);
            arr.push(25);
            arr.push(35);
            arr.push(4);
            arr.push(19);
            arr.push(22);
            arr.push(98);
            arr.push(99);
            arr.push(100);
        }
        SelectionSort.show =function()
        {
            for(var i=0;i<this.arr.length;i++)
            {
               console.log(this.arr[i]);
            }
        }
        SelectionSort.Sort = function(arr)
        {
            var len =arr.length;

            var minIndex ,temp;

            for(var i=0;i<len;i++)
            {
                minIndex =i;

                //arr[i] =arr[minIndex] 算法目标是当前位置的元素是剩余元素的最小值。
                //通过 j=i+1 当前位置下一个位置后面所有元素进行比较,拿到最小值。
                for(var j=i+1;j<len;j++)
                {
                    //寻找最小数
                    if(arr[j]<arr[minIndex])
                    {
                        minIndex =j; //最小数索引
                    }
                }

                temp =arr[j];
                arr[i] =arr[minIndex]; //最小数赋值给当前排序索引元素
                arr[minIndex] =temp; //最小值移动到最小下标进行下一轮比较。
            }
        }

       SelectionSort.init();
       console.log("unsorted arry");
       SelectionSort.show();
       console.log("sorted arry");
       SelectionSort.arrary = SelectionSort.Sort(SelectionSort.arr);
       SelectionSort.show();

       </script>

  

原文地址:https://www.cnblogs.com/ms_senda/p/11391921.html

时间: 2024-11-17 00:15:28

选择排序之javascript的相关文章

选择排序(javascript版本)

基本过程 1. 遍历数组 2. 将当前元素与后面的元素进行比较,将最小的元素换到首位 3. 继续2中的步骤,直至数组只有最后两个元素比较,排序完成 javascript实现 function fSelectSort(arr){ var len=arr.length,temp=0; for(var i=0;i<len-2;i++){ var min = arr[i],index=i; //find min element for(var j=i+1;j<len-1;j++){ if(min &g

选择排序的JavaScript实现

思想 原址比较的排序算法.即首先找到数结构中的最小值并将其放置在第一位,然后找到第二小的值将其放置在第二位...以此类推. 代码 function selectionSort(arr) { const length = arr.length; for (let i = 0; i < length - 1; i++) { let minIndex = i; let changeOccur = false; for (let j = i + 1 ; j < length ; j++) { if (

JavaScript ,Python,java,Go系列算法之选择排序

常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) 的时间复杂度.所以用到它的时候,数据规模越小越好.唯一的好处可能就是不占用额外的内存空间了吧.通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大. 1.算法步骤 首先在未排

JavaScript算法(冒泡排序、选择排序与插入排序)

冒泡排序.选择排序与插入排序复杂度都是指数级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看<计算机科学概论(第三版)>里介绍的选择排序,插入排序看<计算机科学概论(第11版)>里介绍的插入排序, 通过这三份资料弄明白实现原理之后,最后看<学习JavaScript数据结构与算法>一书里的JS实现代码. 嗯,这本书里都有现成代码,就不在这儿写了,关键是弄清楚原理,然后

JavaScript排序算法——选择排序

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序

1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算法和方便以后复习. 之所以把冒泡排序.选择排序.插入排序放在一起比较,是因为它们的平均时间复杂度都为 O(n2). 请大家带着问题:为什么插入排序比冒泡排序更受欢迎 ?来阅读下文. 2. 如何分析一个排序算法 复杂度分析是整个算法学习的精髓. 时间复杂度: 一个算法执行所耗费的时间. 空间复杂度:

javascript选择排序法

选择排序原理: 1.第一次遍历中,找到最小的数组元素然后用第一个数组元素交换它. 2.第二次遍历中,找到第二小的数组元素然后用第二个数组元素交换它. 3.依次类推.如果包含N个元素,那么将在最多N-1次遍历之后完成排序. 示例: 示例结果显示: <!doctype html><html><head><meta charset="utf-8"><title>选择排序法</title><script> va

选择排序javascript

简单选择排序是人们最熟悉的比较方式,其算法思想为:从数组的开头开始,将第一个元素和其他元素进行比较.检查完所有元素后,最小的元素会被放到数组的第一个位置,然后算法会从第二个位置继续.这个过程会一直进行,当进行到数组的倒数第二个位置时,所有的数据便完成了排序. 代码如下: 分析可得,简单选择排序的时间复杂度为O(n2).选择排序的主要操作是进行关键字之间的比较,因此改进简单选择排序应该从如何减少比较出发.其实现实生活中就有一个很好的例子,就是比赛总的锦标赛.8个人中选出冠军其实不需要7+6+5=1

选择排序---直接选择排序算法(Javascript版)

在要排序的一组数列中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止. function sort(elements){ for(i = 0; i < elements.length; i++){ //将当前位置作为关键位置(最小位置) var key = i; //找出剩余的数列中最小值的位置作为关键位置 for(var j = i + 1; j <