aardio 文档

aardio 范例: 桶排序

import console;

/*
桶排序假设输入元素均匀而独立分布在区间[0,1) 即  0 <= x and x < 1;
将区间划分成n个相同大小的子区间(桶),然后将n个输入按大小分布到各个桶中去,对每个桶内部进行排序。
最后将所有桶的排序结果合并起来.
*/

//插入排序算法
var insertSort = function( array ){

    for( right=2;#array ) {
        var top = array[right];

        //Insert array[right] into the sorted seqquence array[1....right-1]
        var left = right -1;
        while( left and array[left]>top){
            array[left+1] = array[left];
            left--;
        }
        array[left+1] = top;

    }
    return array;  
}

//桶排序算法
var bucketSort = function( array ){
    var n = #array;

    var bucket ={}
    for(i=0;n;1){
        bucket[i] = {} //创建一个桶
    }

    var bucket_index
    for(i=1;n;1){
        bucket_index =  math.floor(n * array[i]); 
        table.push( bucket [ bucket_index ],array[i] );//放到桶里去
    }

    for(i=1;n;1){
        insertSort( bucket[i] ); //对每个桶进行插入排序
    }

    return table.concat( table.unpack(bucket) );

}


console.log("----------------");
console.log("桶排序");
console.log("----------------");

var array={};

//桶排序假设输入是由一个随机过程产生的小数
for(i=1;20;1){
    table.push( array,math.random() );
}

//排序
array = bucketSort( array );

//输出结果
for(i=1;#array;1){
    console.log( array[i] );
}

execute("pause");

Markdown 格式