• 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循环,因而相当于没有进行任何操作,结果也是正确的。

  • 相关阅读:
    使用脚本改变树控件的行为 (转)点文本 收..
    (面包屑)SiteMapPath控件简化Web网站导航 (转)
    Web.config详解(转)
    SiteMap(站点地图)示例(转)
    url传递中文的解决方案总结(转)
    INI文件编程,WINAPI函数WritePrivateProfileString,GetPrivateProfileString(转帖)
    hdu 2708
    hdu 1709
    hdu 1045
    hdu 2714
  • 原文地址:https://www.cnblogs.com/twodog/p/12134757.html
Copyright © 2020-2023  润新知