aardio 文档

aardio 范例:计数排序

import console;

/*
假设 n 个 0 到 k 之间的整数。
对于每一个输入元素 x ,确定出小于 x 的元素个数 lt ,则 x 可直接放于输出位置 lt + 1 上。
*/

//计数排序算法
var countingSort = function( array ,k){
    array_sorted ={};

    count ={};
    for(i=0;k ){
      count[i] = 0;
    }

    for(i=1;#array;1){
        count[ array[i] ] = count[ array[i] ] + 1; //count[n] 包含等于n的个数

    }

    //统计位置
    for(i=1;k;1){
        count[i] += count[i-1]; //count[i] 包含小于等于i的个数 
    }

    var n;
    for(i=#array;1;-1){
        n = array[i]
        array_sorted[ count[n] ] = n;
        count[n]--;//防止相同的元素n再次出现,将计数减一 
    }

    return array_sorted; 
}

console.log("----------------")
console.log("计数排序( 线性时间排序 )")
console.log("----------------")

var array = {12;3;22;7;6;23;26};

//取出最大的数
var max = math.max( table.unpack(array) ) ;

//排序
array = countingSort(array,max  )

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

execute("pause")

Markdown 格式