javascript - 麻烦看下我根据自己理解写出的三种排序算法是否正确??
PHP中文网
PHP中文网 2017-04-11 09:40:12
[JavaScript讨论组]

排序算法学习原文链接:链接描述

gif动图描述:
冒泡排序:链接描述
选择排序:链接描述
插入排序:链接描述

根据动图,我写出的代码(没有按照那个网址上的来,而是通过观察动图,得出的代码,正确性未知。不过结果是正确的):

// 冒泡排序
function bubbleSort(arr , sortType){
    var sortTypeRange = ['asc' , 'desc'];
    var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
    // 作为中间值,进行交换
    var cur  = null;
    for (var i = 0; i < arr.length; ++i)
        {
            for (var n = 0; n < arr.length; ++n)
                {
                    
                    if (sortType === 'asc' ? arr[n] > arr[n + 1] : arr[n] < arr[n + 1]) {
                        cur    = arr[n];
                        arr[n] = arr[n + 1];
                        arr[n + 1]   = cur;
                    }
                }
        }

    return arr;
}

// 选择排序
function selectionSort(arr , sortType){
    var sortTypeRange = ['asc' , 'desc'];
    var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
    // 作为中间值,进行交换
    var cur  = null;

    for (var i = 0; i < arr.length; ++i)
        {
            cur = arr[i];
            for (var n = i + 1; n < arr.length; ++n)
                {
                    
                    if (sortType === 'asc' ? cur > arr[n] : cur < arr[n]) {
                        arr[i] = arr[n];
                        arr[n]   = cur;
                        cur    = arr[i];
                    }
                }
        }

    return arr;
}

// 插入排序
function insertSort(arr , sortType){
    var sortTypeRange = ['asc' , 'desc'];
    var sortType = !contain(sortType , sortTypeRange) ? 'asc' : sortType;
    var cur  = null;
    for (var i = 0; i < arr.length; ++i)
        {
            // 用来持续比较的值
            cur = arr[i];
            for (var n = Math.max(0 , i - 1) ; n >= 0; --n)
                {
                    // 自身对比时,跳出
                    if (n === i) {
                        break;
                    }

                    if (sortType === 'asc' ? cur < arr[n] : cur > arr[n]) {
                        arr[n + 1] = arr[n];
                        arr[n]     = cur;
                    } else {
                        break;
                    }
                }
        }
    
    return arr;
}

三种算法运行结果,随机数:10000 个,升序排序:

得出的结果是正确的,感觉自己写的也对。但毕竟是自己觉得,所以想要精通的算法的人看下,上面的代码是否正确??即 标注的名称:冒泡排序实际的代码:冒泡排序代码 是否对应?不会说标注了冒泡排序 ,然后冒泡排序代码用的不是冒泡排序的算法,那就不好了....

麻烦大神看下...,谢谢

PHP中文网
PHP中文网

认证0级讲师

全部回复(0)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号