美文网首页
读《啊哈!算法》——桶排序

读《啊哈!算法》——桶排序

作者: 嘿喵heyMeow | 来源:发表于2016-12-31 01:41 被阅读0次

小案例

一次考试中五个同学分别考了5分、3分、5分、2分、8分(10分满分),请按照从大到小的顺序排序。

提示的思路

1、要排序的5个数是在0-10之间的;
2、把分数从0-10当做数组的索引声明一个数组,初始化值为0;
3、要排序的5个数,依次放到对应的桶里,出现一次,对应的桶的值+1;最终桶值为0的表示没有出现该分数;
4、输出桶值不为0的对应索引,值为几就打印几次;


Paste_Image.png
我的代码
<script>
    window.onload=function(){
        //1、要排序的5个数是在0-10之间的;
        var scoreArray = [5,3,5,2,8];
        //2、把分数从0-10当做数组的索引声明一个数组,初始化值为0;
        var sortArray =[];
        for(var i=0;i<11;i++){
            sortArray[i]=0
        }
        //3、要排序的5个数,依次放到对应的桶里,出现一次,对应的桶的值+1;
        for(var i=0;i<scoreArray.length;i++){
            var index = scoreArray[i];
            sortArray[index] ++;
        }
        //4、输出桶值不为0的对应索引,值为几就打印几次;
        for(var i=sortArray.length-1;i>=0;i--){
            if(sortArray[i]!=0){
                for(var j=0;j<sortArray[i];j++){
                    console.log(i);
                }
            }
        }
    }
</script>

案例升级

输入n个0-1000之间的整数,并把它们从大到小排序。

function BucketSort(n){
    var buketArray =[];
    for(var i=0;i<=1000;i++){
        buketArray[i]=0;
    }
    for(var i=0;i<n;i++){
        var value = prompt('请输入0-1000之间的整数');
        buketArray[value] ++;
    }
    var  sortArray=[];
    for(var i=1000;i>=0;i--){
        if(buketArray[i]!=0){
            for(var j=0;j<buketArray[i];j++){
                sortArray.push(i);
            }
        }
    }
    return sortArray;
}

反思

for循环用的多,注意代码优化。例如在循环输入n个数的同时就可以为对应的桶值+1,不必设两个for循环。

相关文章

  • 读《啊哈!算法》——桶排序

    小案例 一次考试中五个同学分别考了5分、3分、5分、2分、8分(10分满分),请按照从大到小的顺序排序。 提示的思...

  • 排序:桶排序、冒泡排序、快速排序

    拜读《啊哈算法》后的内容笔记。 简易的桶排序 [真正的桶排序并非如此简单]原理:将数组中的某个数,例如6,则将结果...

  • 桶排序简单入门版本

    整理一下算法相关的内容,这里介绍一种简单桶排序,文字介绍&插图出自<啊哈!算法>作者书以及blog。https:/...

  • 线性排序

    桶排序、计数排序、基数排序 一、线性排序算法介绍 1.线性排序算法包括桶排序、计数排序、基数排序。2.线性排序算法...

  • 浅谈排序算法

    排序算法有很多种,今天先谈谈一些简单的排序算法。包括桶排序、冒泡排序和快速排序算法。后期总结各种排序算法。 桶排序...

  • 读《啊哈!算法》——冒泡排序

    冒泡排序不用多说什么了,虽然复杂度很高,但是却这么“有名”。。。不论哪一门语言都应该会写这个,也算入门算法吧~~直...

  • 啊哈!算法 简化版桶排序

    程序要求:五个同学的分数分别为4,5,5,6,8(满分10分),按大小顺序输出这五个分数 include

  • 排序算法(十一)桶排序

    排序算法(十一)桶排序   桶排序(Bucket sort)是计数排序改进版,同样属于非比较排序,该算法的基本思想...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 排序算法三(桶,计数,基数)

    桶排序,计数排序,基数排序算法的时间复杂度都是线性的,所以把这类排序算法叫作线性排序。 桶排序 概念:将要排序的数...

网友评论

      本文标题:读《啊哈!算法》——桶排序

      本文链接:https://www.haomeiwen.com/subject/bodvvttx.html