zoukankan      html  css  js  c++  java
  • JavaScript实现选择排序

    一、选择排序简介
    **冒泡排序、插入排序、选择排序合称为简单排序。**下面是选择排序的思想:

    假设有一个数组a,我们想象成有一个班级名叫a班,现在全班随意排成一排,排头的位置是a[0],排尾的位置是a[a.length-1]。但高矮顺序不是有序的,我们想从矮到高排,排头最矮,排尾最高。

    选择排序是这样工作的:

    第一轮:

    (1)a[1]位置队员与a[0]位置队员比较,如果比a[0]位置队员矮,就把a[1]的位置记住,如果不比a[0]队员矮,就把a[0]位置记住,记住位置的队员是目前已知最矮的;

    (2)a[2]位置队员与记录位置队员比较,如果比记录位置队员矮,就把a[2]改为记录位置,如果不比记录位置队员矮则不改变记录位置,记录位置的队员是目前已知最矮的;

    (3)a[3]位置队员与记录位置队员比较,如果比记录位置队员矮,就把a[3]改为记录位置,如果不比记录位置队员矮则不改变记录位置,记录位置的队员是目前已知最矮的;
    ······
    以此类推,直到a[a.length-1]位置队员与记录位置队员比较完成,这样记录位置队员是所有队员中最矮的。

    但是,我们知道最终要完成排序,最矮的肯定在a[0]位置,因此交换a[0]位置队员和记录位置队员。最矮的队员成功入坑a[0]号位!

    第二轮:

    重复第一轮的过程,只不过这次是从a[1]位置开始,依次比较,最终将记录位置队员放入a[1]。第二矮的队员成功入坑a[1]号位!

    ······
    最后一轮:

    从a[a.length-2]位置开始依次比较,这时只剩a[a.length-2]和a[a.length-1]还没有排好序,经过一次比较,就把第二高的队员放入了a[a.length-2]位置,a[a.length-1]位置队员肯定是最高的,排序完成。

    二、JavaScript实现选择排序

    function select_sort(arr) {
                var k;
                var temp;
                var l=arr.length;
                for (var i = 0; i < l-1; i++) {
                    k=i;
                    for (var j = i+1; j < l; j++) {
                        if (arr[j]<arr[k]) {
                            k=j;
                        }
                    }
                    temp=arr[k];
                    arr[k]=arr[i];
                    arr[i]=temp;
                }
                return arr;
            }
            var a=[11,2,3,445,7,32,71,1,94];
            console.log(select_sort(a));
            var b=[94,11];
            console.log(select_sort(b));
    

    说明:

    如果数组仅有一个元素,不会进入外层for循环,因而相当于没有进行任何操作,结果也是正确的。

  • 相关阅读:
    代码题(11)— 链表两数相加
    机器学习(十九)— xgboost初试kaggle
    【js】鼠标跟随效果
    【js】event(事件对象)详解
    【vue】vue +element 搭建项目,this.$nextTick用法
    【vue】vue +element 搭建及开发中项目中,遇到的错误提示
    【vue】vue +element 搭建项目,点击空白处关闭弹窗
    【js】把一个json对象转成想要的数组
    【vue】vue +element 搭建项目,使用el-date-picker组件遇到的坑
    【vue】vue +element 搭建项目,在使用InputNumber 计数器时遇到的问题
  • 原文地址:https://www.cnblogs.com/twodog/p/12134757.html
Copyright © 2011-2022 走看看